繁体   English   中英

C程序-File-io用户输入

[英]C Program - 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;
}

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

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

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

否则fopen将失败。

假设您的意思是fopen(file,...) ,则必须先除去换行符的文件,然后才能执行此操作。 请参见手册页中的fgets和[我建议] strchr

使用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调用也可能会失败)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM