void formFile(FILE** f, char** name)
{
printf("Enter name: ");
scanf("%s", name);
if (1 == doesFileExist(*name, f))
{
printf("Already exists.");
return;
}
}
这是doesFileExist(char*, FILE**)
:
int doesFileExist(char *name, FILE ** f)
{
if(NULL == (*f = fopen(name, "wb")))
{
return 0;
}
return 1;
}
在formFile()
中,当我注释掉if
时,代码运行时没有任何错误。非常感谢任何反馈!
答案 0 :(得分:0)
它应该是W +或W
正确的:
*f = fopen(name, "r");
if(f){
return 1;//fike exist
}
return 0;
答案 1 :(得分:0)
在doesFileExist()
中,如果fopen()
成功则返回1,如果失败则返回0。但是在formFile()
中,如果doesFileExist()
返回1,则会打印错误消息,换句话说,如果一切正常。
另一个问题是。您使用scanf( "%s", name );
调用char **name
但%s
需要char *
作为参数(指向足够的数组),因此您应该执行类似
int size = /* large enough */;
*name = malloc( size );
scanf( "%s", *name );
或更好地使用fgets( *name, size, stdin );
代替scanf()
,因为它会自动读取最多size-1
个字符。