gpt4 book ai didi

计算C中文本文件每行的字符数

转载 作者:太空宇宙 更新时间:2023-11-04 08:23:01 25 4
gpt4 key购买 nike

所以我试图计算文本文件每一行中的字符数。我已经成功地计算了它们,但似乎无法计算文本的最后一行。这是我的代码

#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;
}

最佳答案

这个循环:

while((x = getchar())!= EOF ){

正在从控制台而不是从文件中读取。那可能不是你想要的。您已经使用 fgets 从文件中读取了一行,所以您只需要使用 strlen 来查看它有多长。但是,由于 fgets 将换行符留在缓冲区中,因此您需要先通过将 NULL 字节替换为换行符来将其删除。

所以你的主循环应该是这样的:

while( fgets (line, 1000, file)!=NULL ) 
{
line[strlen(line)-1] = 0; // remove newline
printf("%s\n",line); // print a newline, since the line no longer contains one
printf("S1: line %6d, bytes = %3d\n---\n",lines,strlen(line));
lines +=1;
}

关于计算C中文本文件每行的字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32534629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com