在这个程序中(基本上将输入复制到数组中并最终显示它) - >
#include<stdio.h>
int main()
{
int c,i=0;
char arr[100];
while((c=getchar())!=EOF)
{
if((((c>=65)&&(c<=90))||((c>=97)&&(c<=122)))||(c==' ')||(c=='\t'))
arr[i]=c;
i++;
}
printf("\n%s in print\n",arr);
return 0;
}
至于成功传递 EOF ,需要按两次或一般按ENTER后 CTRL + D 。所以我写了这个版本只允许某些字符进入数组。但输出非常可疑,有时它会提供无错输出,有时则不是。以下是两次运行的输出:
答案 0 :(得分:3)
printf
%s
需要一个字符串。您正在传递arr
,这不是字符串。字符串需要'\0'
终止符来标记结尾。
答案 1 :(得分:0)
arr
是char数组,它应该是 null终止。何时陈述
printf("\n%s in print\n",arr);
执行%s
格式尝试打印直到'\0'
字符,但在您的情况下,最后没有'\0'
,因此它会打印一些垃圾数据。
while((c=getchar())!=EOF) {
if((((c>=65)&&(c<=90))||((c>=97)&&(c<=122)))||(c==' ')||(c=='\t'))
arr[i]=c;
i++;
}
当循环失败时,最后放置'\0'
字符。
arr[i] = '\0'