尝试打开文件时,Program.exe已停止工作

时间:2018-01-15 10:42:48

标签: c file input

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时,代码运行时没有任何错误。非常感谢任何反馈!

2 个答案:

答案 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个字符。