c - 我的函数 "openfile"有什么问题

标签 c file fopen

void openfile(FILE *fichier,char *str){
    char path;



    path=(char*)malloc(sizeof(char));

    fichier = fopen(&path,"r");

    if (fichier)
        printf("fichier chargé avec succes \n");
    else
        printf("ERREUR");

}

我以这种方式调用该函数:

openfile(fichier,cc);

和抄送包含“C:\Documents and Settings\Oussema\Mes 文档\test.txt”

它返回:“ERREUR”

最佳答案

这段代码毫无意义。

  • 参数str被忽略。
  • path 被分配一个指向一个字符数组的指针
  • 参数fichier被忽略。函数中为其分配了一个值。这不能用于返回值。
  • fopen 的第一个参数是指向垃圾的指针。

尝试一下,看看为什么不同。

void openfile(FILE **fichier, char *str)
{
    if (NULL == fichier) return;

    *fichier = fopen(str, "r");

    if (*fichier)
        printf("fichier chargé avec succes\n");
    else
        printf("ERREUR");
}

编辑:

我更愿意将值作为返回值返回。在这种情况下,它只不过是函数 fopen 本身的详细版本。

FILE* openfile(char *str)
{
    FILE *fichier

    fichier = fopen(str, "r");

    if (NULL != fichier)
        printf("fichier chargé avec succes\n");
    else
        printf("ERREUR");

    return fichier;
}

关于c - 我的函数 "openfile"有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24013051/

相关文章:

java - BufferedReader.readline() 返回空值

c - 如何在 C 中打印文件描述符中的信息。

c - 在C中定义一个函数以从用户处获取二维矩阵的元素

C - 为字符串分配空间时出现段错误

将数组内容从一个复制到另一个(动态内存分配)

c - 错误:std::fopen 不是 std 的成员

c++ - 如何解决这个编译错误

c - 如何使用按位运算符?

c - 缓冲区输出缺少名字

.net - 处理从 html 页面到单独的 .NET 页面的文件上传