我正在尝试使用fopen在C中打开一个文件,但我遇到了一个相当奇怪的问题。如果我这样做,它的效果非常好:
ptr_file = fopen("file.txt", "r");
但是如果我尝试这个就行不通了
char file_name[20];
printf("Enter file name");
scanf("%s",file_name);
ptr_file = fopen(file_name, "r");
file_name本身的值存储在一个简单的字符数组中,如果您输入相同的文件名,我在第一个和第二个实现之间看不到任何区别。我觉得我在这里遗漏了一些明显的东西。
答案 0 :(得分:0)
无论是否有尾随\n
,都会将其作为空格跳过。这是一个简单的例子:
#include <stdio.h>
int main() {
char file_name[20];
printf ("\nEnter a filename: ");
scanf("%[^\n]%*c", file_name);
FILE *ptr_file = fopen(file_name, "r");
if (!ptr_file)
fprintf (stderr, "\nError: failed to open '%s'\n\n", file_name);
else
printf ("\n Successfully opened file: '%s'\n\n", file_name);
/* do stuff with file */
if (ptr_file) fclose (ptr_file);
return 0;
}
<强>输出:强>
$ ./bin/fileopen
Enter a filename: tolowercnvsn.c
Successfully opened file: 'tolowercnvsn.c'
它同样适用于:
scanf("%s", file_name);