如何读取字符直到字符?
How to read character until a char character?
我正在尝试执行一个循环,从文件中读取单个字符,直到找到 '\n'
或 '*'
。
这是我写的循环:
i=0;
do {
fscanf(fin,"%c",&word[i]);
i++;
} while(word[i]!='*'&&word[i]!='\n');
现在我试着看看为什么它不能与调试器一起工作。当我在 fscanf
之后立即打印 word[i]
时,它会显示正确的字符,但是如果我在与 '*'
或 [=11 进行比较时尝试打印 word[i]
=] 它告诉我 word[i]
是 '[=19=]0'
并且循环永远不会结束。
我也试过 fgetc
但我有同样的错误。
您的 while
条件未测试您刚刚阅读的 word
的相同元素,因为 i++
在测试之前递增了变量。
将测试更改为使用 word[i-1]
而不是 word[i]
来对此进行调整。
顺便说一句,word[i] = fgetc(fin);
是一种更简单的读取一个字符的方法。
您必须确保您正在处理的字符与您刚刚读取的相同。
实际上你在测试单词 [i] 之前增加了计数器 i
,这就是你检查失败的原因。
试试看
i=0;
do {
fscanf(fin,"%c",&word[i]);
}while(word[i]!='*'&&word[i++]!='\n');
我宁愿在循环中移动检查(如果条件满足则中断)留在 while 中检查单词数组长度的测试。
另一种方式:
for(;;) {
int c = fgetc(fin);
if ( c == EOF ) {
break;
word[i] = c;
if( c == '*' || c == '\n' ) {
break;
}
}
我正在尝试执行一个循环,从文件中读取单个字符,直到找到 '\n'
或 '*'
。
这是我写的循环:
i=0;
do {
fscanf(fin,"%c",&word[i]);
i++;
} while(word[i]!='*'&&word[i]!='\n');
现在我试着看看为什么它不能与调试器一起工作。当我在 fscanf
之后立即打印 word[i]
时,它会显示正确的字符,但是如果我在与 '*'
或 [=11 进行比较时尝试打印 word[i]
=] 它告诉我 word[i]
是 '[=19=]0'
并且循环永远不会结束。
我也试过 fgetc
但我有同样的错误。
您的 while
条件未测试您刚刚阅读的 word
的相同元素,因为 i++
在测试之前递增了变量。
将测试更改为使用 word[i-1]
而不是 word[i]
来对此进行调整。
顺便说一句,word[i] = fgetc(fin);
是一种更简单的读取一个字符的方法。
您必须确保您正在处理的字符与您刚刚读取的相同。
实际上你在测试单词 [i] 之前增加了计数器 i
,这就是你检查失败的原因。
试试看
i=0;
do {
fscanf(fin,"%c",&word[i]);
}while(word[i]!='*'&&word[i++]!='\n');
我宁愿在循环中移动检查(如果条件满足则中断)留在 while 中检查单词数组长度的测试。
另一种方式:
for(;;) {
int c = fgetc(fin);
if ( c == EOF ) {
break;
word[i] = c;
if( c == '*' || c == '\n' ) {
break;
}
}