【发布时间】:2015-05-22 19:56:16
【问题描述】:
我很困惑为什么我的程序运行不好。我使用 PuTTY 通过我的 Windows PC 连接到服务器。它总是工作正常,但我相信有些奇怪的事情正在发生。 这是 identify.c 的代码:
#include <stdio.h>
#include <ctype.h>
int main()
{
while(1)
{
char word[256];
int i;
int validity = 1;
scanf("%s", word);
for(i=0; word[i]!='\0'; i++)
{
if(i == 0)
{
/* First character should only be underscore or a letter */
if(word[i]!= '_' && !isalpha(word[i]))
{
validity = 0;
break;
}
}
else
{
/* Rest can be Alpha-numerics or underscore */
if(word[i]!= '_' && !isalnum(word[i]))
{
validity = 0;
break;
}
}
}
if(validity)
printf("valid\n");
else
printf("invalid\n");
}
return 0;
}
这是用于测试名称是否是可能的标识符名称的输入文件。身份测试.txt:
name
name2
2name
_name
__name
na_me
@name
na-me
然后我使用 FileZilla 将这两个文件上传到我的服务器。
然后我执行以下命令使 identify.c 可执行:
gcc identify.c -o identify
已创建可执行文件。 然后我运行以下命令:
identify <identifytest.txt >output.txt
然后创建的 output.txt 为空。
任何想法为什么?在过去的 2 天里,我一直为此发疯,不知道发生了什么。
【问题讨论】:
-
这个程序什么时候终止?
-
@simon 正要问同样的问题... :-)
-
第 1 步:限制输入长度。更改为
scanf("%255", word);2) 检查scanf()、if (1 != scanf("%255", word)) break;的结果 -
您编辑了问题以删除所有代码。形式不好。我帮你恢复了。
标签: c input output executable