我的程序应该打印包含在文本文件中的文本,该文本文件与源代码和可执行文件保存在同一目录中,然后打印行数。 但是,输出是一些随机字符。 我正在使用ubuntu。
跟进问题:哪个文件必须与文件位于同一目录(如果我未指定绝对路径),可执行文件或源代码? 预先感谢。
#include <stdio.h>
#include <stdlib.h>
int main(){
char c;
int i = 0;
FILE *fp = fopen("newfile","r");
if(!fp) {
printf("Error opening\n");
return -1;
}
printf("Text of newfile: \n");
while(fgetc(fp)!=EOF){
c = fgetc(fp);
printf("%c",c);
if(c == '\n')
++i;
}
fclose(fp);
fp = NULL;
printf("\nThere are %d lines in the file\n",i+1);
return 0;
}
该文件包含以下文本:
this is my file
this is line 2
输出:
Text of newfile:
hsi yfl
hsi ie2�
There are 2 lines in the file
答案 0 :(得分:4)
对于初学者,您在循环中两次使用fgetc
while(fgetc(fp)!=EOF){
^^^^^^^^^
c = fgetc(fp);
^^^^^^^^^
//...
第二,必须将变量c
声明为类型int
。
循环可以如下所示
int c;
//...
while ( ( c = fgetc( fp ) ) != EOF )
{
putchar( c );
if ( c == '\n' ) ++i;
}