C程序 - File-io用户输入

时间:2015-10-24 02:57:45

标签: c file-io user-input

我正在尝试让用户输入特定的文件名,并让程序能够阅读它。

FILE *fp;

char file[10];

fgets(file, sizeof(file), stdin);
fp = fopen(file, "r");

if (fp == NULL) {
    printf("File doesn't open\n");
    return 1;
}

这是我的代码的一部分以及我目前正在尝试做的事情。当我运行程序并输入文件名时,输出为"文件未打开"这是我的错误信息。

3 个答案:

答案 0 :(得分:3)

问题是fgets还在字符串读取中包含换行符'\n'。你需要删除它,

char* p;
if(p = *strchr( file, '\n' ))
    *p = '\0';

否则fopen将失败。

答案 1 :(得分:2)

假设您的意思是fopen(file,...),那么在您可以执行此操作之前,您必须删除换行符的文件。请参阅fgets和[我建议] strchr的手册页。

答案 2 :(得分:1)

使用perror打印系统错误诊断:

int main(){
  FILE *fp;
  char file[10];

  fgets(file, sizeof(file), stdin);
  fp = fopen(file, "r");

  if (!fp) {
    perror(file);
    return 1;
  }
}

如果您要求提供档案f,则会打印:

f
: No such file or directory

应该指出问题的根源(例如,fopen调用也可能因权限原因而失败。)