我只想读取文件中每行的前五个字符(包括空格)。意思是,在指针到达某一行的第 5 个字符后,我希望指针重置到下一行的开头,并继续这样做,直到到达 EOF。
例如,如果我想读取文件中每一行的前 5 个字符,则结果应如下:
Hello World ---> Hello
blah blah ---> blah
Goodbye ---> Goodb
我尝试通过实现 fgets
来实现此目的,但是我不知道如何在读取 5 个字符后重置指针:
while (feof(inputFile) == 0) {
fgets(str, 6, inputFile);
发生的情况是,fgets
在第 5 个字符处停止,但它没有转到下一行,而是继续读取同一行的接下来 5 个字符。
有没有办法让 fgets
在读入 5 个字符后从下一行开始?任何不实现 fgets
的替代方法也是可以接受的。
最佳答案
试试这个
void trimFile(const char *inputFile, const char *outputFile, int length) {
FILE *fin, *fout;
fin = fopen(inputFile, "r");
fout = fopen(outputFile, "w");
char str[length + 1];
while (fgets(str, sizeof str, fin)){
char *p = strchr(str, '\n');
if(p){
fputs(str, fout);
} else {
int ch;
while((ch=fgetc(fin))!='\n' && ch != EOF)
;
fprintf(fout, "%s\n", str);
}
}
fclose(fin);
fclose(fout);
}
关于C-从文本文件中的每一行读取特定数量的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27428159/