Ch0*_*sen 0 c string fopen file
在我的代码中的某个时刻,我想读一个我将要创建(和/或编辑)的文件的名称,并且我想出了以下内容:
FILE *fp;
char filename[15];
fgets(filename, 15, stdin);
fp = fopen(filename, "a");
fprintf(fp, "some stuff goes here");
fclose(fp);
Run Code Online (Sandbox Code Playgroud)
即使它确实编译并运行,它也不会创建(或打开,如果我手动创建它)指定的文件filename.
你会建议什么?
fgets()存储读取stdin输入行后读取的换行符.您需要手动剥离它,例如
size_t len = strlen(filename);
if (len > 0 && filename[len - 1] == '\n')
filename[len - 1] = '\0';
Run Code Online (Sandbox Code Playgroud)
您还应检查fopen()是否返回NULL,如果无法打开文件,它将执行此操作.我想用fprintf一个NULL文件指针是未定义的行为.