C语言 程序没有给出问题中要求的期望输出



我正在解决这个问题:

编写程序读取文件并显示其行号。

下面是我写的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void lineprint(int *line){
*line=*line+1;
printf ("Line %d",line);
}
int main(){
FILE *fp;
fp=fopen("sample.txt","r");
if (fp==NULL){
printf ("File not Found");
exit(0);
}
else {
int line=1;
printf ("Line %dn",line);
while ((fgetc (fp))!=EOF){
printf ("%c",fgetc(fp));
if ((fgetc(fp))=='n'){
lineprint(&line);
}
}   
}
fclose (fp);
return 0;
}

然而,我得到的是垃圾输出。请帮帮我。

所以基本上当你调用fgetc()时,结构体FILE的内部指针返回文件中的第一个char大小数据并移动sizeOf(char)指针。你也没有增加线的价值。我对代码做了一些调整,它工作了。

#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *fp;
int letter;
fp=fopen("test.txt","r");
if (fp==NULL){
printf ("File not Found");
exit(0);
}
else {
int line=1;
printf ("Line %dn",line);
while ((letter = fgetc(fp))!=EOF){
printf ("%c",letter);
if (letter =='n'){
line++;
printf ("Line %dn",line);
}
}
}
fclose (fp);
return 0;
}

希望能有所帮助,如果你有任何问题,我很乐意尝试和回答=)

应该可以。您应该将读取到的字符保存到一个变量中,稍后再使用它。此外,您应该再次检查指针(解引用是您正在寻找的)。

#include <stdio.h>
#include <stdlib.h>
void lineprint(int *line){
(*line)++; /* Dereference first */
printf ("Line %dn",*line); /* Dereference here */
}
int main(void){
FILE *fp;
fp=fopen("sample.txt","r");
if (fp==NULL)
{
printf ("File not Found");
exit(0);
}
else 
{
int line = 1;
int c = 0;
printf ("Line %dn",line);
while ((c = fgetc (fp))!=EOF) /* Save the character read into a variable, use that later */
{ 
printf ("%c",c);
if (c =='n'){
lineprint(&line);
}
}   
}
fclose (fp);
return 0;
}

最新更新