fgetc在打击'时的行为\n';
下面是我想从文件中获取输入并计算每行中的字符数的代码,但它会在第一行停止fgetc在打击'时的行为\n';,c,io,C,Io,下面是我想从文件中获取输入并计算每行中的字符数的代码,但它会在第一行停止 #include<stdio.h> int main(){ FILE *instream; int c; char in; int linenum = 1; int charcount = 0; if ((instream = fopen("in.txt","r+")) == NULL) { printf("Unable to open file3\n"); retur
#include<stdio.h>
int main(){
FILE *instream;
int c;
char in;
int linenum = 1;
int charcount = 0;
if ((instream = fopen("in.txt","r+")) == NULL) {
printf("Unable to open file3\n");
return(0);
}
while ((c = fgetc(instream)) != EOF ){
if(c == '\n') {
printf("%3d: %d\n",linenum,charcount);
linenum++;
charcount = 0;
}
else{
charcount++;
}
}
fclose(instream);
}
然后把它放出去
1: 6
但我所期望的是
1: 6
2: 6
如何使用getc实现这一点?
我看到许多关于getc的答案在遇到“\n”时表现不同,但它们似乎与我想要的太不同了。您的代码无法正确处理最后一行结尾没有“\n”字符的情况 这通常由循环后的条件处理:
while ((c = fgetc(instream)) != EOF ){
...
}
// Handle the last line:
if (charcount != 0) {
printf("%3d: %d\n", linenum, charcount);
}
+1是的,我意识到了我的错误,这是有效的,我也可以用我力所能及的“\n”(即,点击回车键)结束我的文件。
while ((c = fgetc(instream)) != EOF ){
...
}
// Handle the last line:
if (charcount != 0) {
printf("%3d: %d\n", linenum, charcount);
}