传递文件名作为参数

时间:2011-03-01 06:15:41

标签: c file dynamic filenames

char fname[256];
printf("Enter file name\n");
scanf("%123s",fname);
strcat(fname,".txt");

FILE *inputf;
inputf=fopen(fname,"w");

if (inputf!=NULL)
    printf("found");
else
    printf("not found");

问题是,无论我输入什么文件名,我都会得到一个非 null pointer.can任何一个解释原因??

2 个答案:

答案 0 :(得分:3)

fopen(filename," w")将创建一个新文件。因此,如果您输入合法文件名并具有适当的文件系统权限,则应该会成功。

如果您尝试打开现有文件,请使用:

fopen(filename, "r")

(注意" r"模式,而不是" w"。)

答案 1 :(得分:0)

不是这样的:

char fname[256]; 
printf("Enter file name\n"); 
scanf("%123s",fname); 
strcat(fname,".txt"); F
FILE *inputf; inputf=fopen(fname,"w");  // <--!!!
if (inputf!=NULL) printf("found"); 
else printf("not found");

but this instead:

char fname[256]; FILE *inputf;

inputf=fopen(fname,"w");
printf("Enter file name\n");

// you know that you can't ever, EVER use scanf( ) so // remove this time bomb and use something else scanf("%123s",fname);

strcat(fname,".txt"); inputf=fopen(fname,"w"); if (inputf!=NULL) { printf("found"); } else { printf("not found"); }

现在,什么指针不是NULL?您无法按原样编译代码,因此您如何知道什么是NULL或不是NULL?

- 皮特