2013-05-13 148 views
0

我有与作业有关的文件问题。如何在处理文件时跳过数据C语言

这里是分配:

我被要求写代码,增加了各行的文本文件,该行数的程序。例如,如果原文件为:

Hi my name is Oria 
I study programming 
I love dogs 
I use stackoverflow 

将改为:

1 Hi my name is Oria 
2 I study programming 
3 I love dogs 
4 I use stackoverflow 

但我不知道如何跳过一条线。在写完第一个数字之后,如何提前将*文件指针作为下一行的第一个字符?

+0

强迫人们在纯C中使用文本来学习它是否有意义? – maverik 2013-05-13 17:11:32

+0

@maverik:当然,为什么不呢? – 2013-05-13 19:25:49

+0

当您读取文件时,您当前在文件中的位置会自动前进。 – 2013-05-13 19:26:57

回答

1

使用getline(3)读取循环中的行。在循环中,您可以随意跳过行。

while (1) { 
    .... 
    getline(); 

    if (...) 
     continue; 

} 
+3

而不是'fgets()'。 – 2013-05-13 17:15:52

+0

@ H2CO3:有POSIX定义的getline函数(但不是由ISO C定义);它通过使用'malloc'或等价物分配行来避免'fgets'具有长行的问题。 (也可能有其他不兼容的函数具有相同的名称。)使用'fgets()'的代码更加便携。 – 2013-05-13 19:24:37

2

这可以在写入另一个文件的帮助下完成。

使用fgets读取输入文件的每一行并开始循环计数,然后用计数和数据写入输出文件。

#include <stdio.h> 
int main() 
{ 
FILE *src, *dest; 
char buf[64]; 
int i = 0; 
src = fopen("in.txt", "r"); 
dest = fopen("out.txt", "w"); 
while(fgets(buf, 64, src) != NULL){ 
    i++; 
    fprintf(dest, "%d %s", i,buf); 
} 
fclose(src); 
fclose(dest); 
return 0; 
}