所以我试图计算文本文件每行中的字符数。我已成功计算了它们,但似乎无法计算文本的最后一行。这是我的代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLINE 1000
#define NEWLINE '\n'
int
main(int argc, char*argv[]){
int bytes =-1, lines = 1;
char x,line[MAXLINE];
FILE *file;
file = fopen("no.txt","r");
printf("s0: query = \"%s\"\n",argv[1]);
printf("---\n");
if (file == NULL){
printf("File doesn't exist \n");
exit(EXIT_FAILURE);
}
while( fgets (line, 1000, file)!=NULL )
{
printf("%s",line);
while((x = getchar())!= EOF ){
bytes +=1;
if (x == NEWLINE){
printf("S1: line %6d, bytes = %3d\n---\n",lines,bytes);
bytes = -1;
break;
}
}
lines +=1;
}
fclose(file);
return 0;
}
答案 0 :(得分:2)
这个循环:
mysql> source /home/melissa/myscript.sql
是从控制台而不是从文件中读取。这可能不是你想要的。您已使用while((x = getchar())!= EOF ){
从该文件中读取了一行,因此您只需使用fgets
即可查看它有多长。但是,由于strlen
将换行符保留在缓冲区中,因此您需要先使用NULL字节代替换行符来删除换行符。
所以你的主循环应该是这样的:
fgets