【发布时间】:2018-02-22 23:41:19
【问题描述】:
基本上,这个程序试图实现一个简单的 C 版本的 UNIX cat 命令。它只会显示一个文件,如果正确完成,它应该能够在命令行上执行一个包含需要显示的名称的命令行参数。我试图作为参考的一些问题是“如何使用用户输入连续写入文件?C 语言”、“从用户输入创建文件”和“用 c 语言完全打开文件”。但是,这些对我没有多大帮助,因为一个文件在用光标选择时想要打开,另一个是另一种语言,最后一个有点难以理解,因为我不在那个级别然而。以下是我迄今为止的代码,如果你们都能够借给我任何建议,我将不胜感激!
#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 30
int main (int argc, char** argv)
{
File *stream;
char filename[MAX_LEN];
printf("File Name: ");
scanf("%s", filename);
stream = fopen(filename, "r");
while(1)
{
fgets(stream);
if(!feof(stream))
{
printf("%s", "The file you entered could not be opened\n");
break;
}
}
printf("To continue press a key...\n");
getchar();
fclose(stream);
return 0;
}
【问题讨论】:
-
您的程序不显示该文件,并且它以错误的方式和错误的顺序进行错误检查,您的问题并没有真正的问题。如果你看过其他类似的问题,link 到他们,而不是仅仅写他们的标题。请花点时间联系take the SO tour 和read about how to ask good questions。
-
文件名应该是
argv[1],你需要检查argc是2 -
顺便说一句,编译时包含所有警告和调试信息:
gcc -Wall -Wextra -g -
我认为该代码甚至无法编译。尝试让它编译,并且没有警告(使用
-Wall -Wextra来启用警告)。或者如果你不能让它编译,你可以询问你无法修复的错误。此外,请阅读您使用的函数的文档(如fgets)。此外,检查返回值是否有错误是个好主意,这将有助于找出代码何时编译和运行但没有做正确的事情。