2011-12-01 52 views
1

我是C新手,所以我无法弄清楚如何做到这一点。我有这样一个while循环:我怎样才能重写这个,而不是使用char数组?

char my_line[MAXLINE]; 
while(gets(my_line) != NULL) { 
    //process line 
} 

目前,这while循环从标准输入接受输入。有人可以告诉我如何使用char数组,即将数据从文件读入char数组,然后将char数组传递给while循环吗?

+5

永远不要使用'gets'。决不。永远不能。没有办法指定'gets'插入数据的缓冲区的大小,所以任何使用'gets'的程序都有一个严重的安全缺陷。 'fgets'是一个可用的选择。 –

+0

@JamesMcNellis:这不是我的代码,但我一定会牢记这一点。谢谢。 – Legend

回答

1

很容易。只需使用fgets。这并没有解决动态内存分配问题,这个例子使用了一个固定大小的char数组。

FILE * pFile; 
    char mystring [100]; 

    pFile = fopen ("myfile.txt" , "r"); 
    if (pFile == NULL) 
    { 
     perror ("Error opening file"); 
    } 
    else 
    { 
     fgets (mystring , 100 , pFile); 
     fclose (pFile); 
    } 

    //mystring now contains the file with EOF terminator. 
+0

太棒了...非常感谢! – Legend

相关问题