我正在尝试编写一个函数,给出一些文本文件,它返回一些特定的行 . 但问题是其中一些不打印 .
我使用fgets(var,1500,(file *)fp)从文件中获取每一行,然后使用printf打印它 .
文件的内容如下:
致:马克
来自:鲍勃
ID:0
2017年2月5日星期日13:21:38
主题:足球
文字:下周六早上
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void listmails(){
char To[300];
char From[300];
char Date[1500];
char Subject[300];
char ID[300];
char Text[300];
char llegible[500];
int countkong = 0;
FILE *fp;
while (countkong != -1 ){
sprintf(llegible, "%d_EDA1_email.txt", countkong); // files name are of the type 0_EDA1_email.txt, 1_EDA1_email.txt...
fp = fopen(llegible, "r");
countkong ++;
if(fp!=NULL){
fgets(To, 300, (FILE*)fp); // I don't want to do nothing wit this line, only to jump to the next line of the file
fgets(From, 300, (FILE*)fp);
printf("%s\n", From);
fgets(ID, 300, (FILE*)fp);
printf("%s\n", ID);
fgets(Date, 1500, (FILE*)fp);
fgets(Subject, 300, (FILE*)fp);
printf("%s\n", Subject);
}
}
}
int main()
{
listmails();
return 0;
}
1 回答
如果你的输入文件表示是准确的,那么你有大约11或12行,一些有可见文本,有些只有空格,可能是一个新行(
\n
)fgets():
如上所述,您的代码似乎可以读取一些正常的内容,而不是您认为正在阅读的内容:
等等 .
但是,从查看结果来看,我不确定您的代码段中包含的内容实际上是您编译的内容 .
要改进,请尝试使用循环结构来读取文件:
获得头信息后,启动一个新的循环部分以连接正文文本 .