【发布时间】:2015-12-05 19:52:13
【问题描述】:
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define N 256
int main(int argc, const char * argv[]) {
char testo[N];
int i;
printf("PER TERMINARE L'INSERIMENTO PREMERE CTRL+Z oppure CTRL+D \n");
for(i=0;i<N;i++)
{
scanf("%c",&testo[i]);
/* if(testo[i]=='h' && testo[i-1]=='c')
{
i--;
testo[i]='k';
}
if(testo[i]==testo[i-1])
{
i--;
} */
if(testo[i]==EOF)
{
break;
}
}
puts(testo);
return 0;
}
编译/* ... */ 中的代码时,我无法停止使用EOF 插入文本,但是当代码按照此处所示构建并运行时,EOF 可以工作。
有人知道问题出在哪里吗?
【问题讨论】:
-
更好的是,使用
getline或至少fgets阅读整行 -
if (testo[i] == EOF)巧合地工作是类型char类型已签名。在读取字符\377时也会错误地检测到文件结尾。