【问题标题】:How can I rewrite this while to use a char array instead?我怎样才能改写这个而使用 char 数组呢?
【发布时间】:2011-12-01 00:25:00
【问题描述】:

我是 C 的新手,所以我无法弄清楚如何做到这一点。我有一个这样的while循环:

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

目前,此 while 循环从标准输入获取输入。有人能告诉我如何改用 char 数组,即将我的数据从文件读入 char 数组,然后将 char 数组传递给 while 循环吗?

【问题讨论】:

  • 永远不要使用gets。绝不。永远不能。无法指定gets 插入数据的缓冲区的大小,因此任何使用gets 的程序都存在严重的安全漏洞。 fgets 是一个可用的替代方案。
  • @JamesMcNellis:这不是我的代码,但我一定会牢记这一点。谢谢。

标签: c


【解决方案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.

【讨论】:

  • 太棒了...非常感谢!
猜你喜欢
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
相关资源
最近更新 更多