0

所以我正在尝试编写一个 C 代码,它将文件名作为参数并读取文件并将其存储到数组中。我已经尝试过但失败了:(

谁能指出我正确的方向?这是我想出的(我知道它可能完全偏离轨道:/)

#include <stdio.h>

int main (int argc, char *argv[]) {
   char content[500];
   int k=0;
   FILE* inputF;
   inputF = fopen("argv[0]", "r");

   do {
       fscanf(inputF, "%c", &content[k]);
       k++;
   } while (content[k] != EOF ); 

return 0;
}
4

2 回答 2

3

您将"argv[0]"字符串传递给fopen,我确定这不是您要打开的文件的名称。

您应该传递一个指向包含文件名的字符串的指针。

inputF = fopen(argv[1], "r");


argv[1]还要注意not 的用法argv[0]

argv[0]包含可执行文件的完整文件路径和名称以及argv[1]作为命令行参数输入的第一个字符串。

于 2013-03-07T23:45:13.177 回答
1

有几点可以帮助您入门:

argc是参数的数量,第一个argv指针是可执行文件的名称。第二个是你想要的。

在尝试使用它之前,您必须检查您的文件指针是否有效。

也许看看使用fgetc来读取每个字符,并测试 EOF。

您需要检查是否没有超出content缓冲区。

如果你被卡住了,下面是一个使用 do while 的主循环示例:

do {
    ch = fgetc(fp);
    content[a] = ch;
    a++;
} while (ch != EOF && a < 500);

这将在您的数组中存储一个 EOF(如果找到)。

于 2013-03-07T23:49:57.793 回答