注册 登录
编程论坛 C语言论坛

求助cannot convert file to const char的bug怎么解决

菜鸡74 发布于 2020-05-13 08:16, 5950 次点击
windows上面按的VScode
然后出了这个bug
cannot convert 'FILE*' {aka '_iobuf*}to 'const char*'
百度了一下没有出现这种状况的
求教一下是我环境下少了还是就是程序编的很有问题呀?

程序代码:
#include <stdio.h>

int mian(void)
{
    FILE *fp;

    char b[100];
    int c;
    char a[100];

    if((fp=fopen("gifts.dat","r"))==NULL)
    printf("ファイルをオープンできません。\n");
    else{
        while(fscanf(fp,"%s%s%d",a,b,&c)==3){
        printf(fp, "%-10s %-10s %d\n",a,b,c);
        fclose(fp);
        }}
    getchar ();
    return 0;
}
10 回复
#2
yiyue1232020-05-13 08:59
第二个printf 那里,应该用 fprintf 而不是 printf,fprintf 才有文件结构指针参数
不过,这里应该是把 fp 去掉,看你的意思应该是输出到屏幕,
还有经典的 mian 函数......
#3
菜鸡742020-05-13 09:15
回复 2楼 yiyue123
大佬,改成
printf("%-10s %-10s %d\n",a,b,c);

试了一下还是不行怎么办呀
#4
forever742020-05-13 09:17
正面鼓励一下,作为初学者,使用的是因特面,不是沃伊德面,这就值得表扬了。
#5
lin51616782020-05-13 09:17
        while(fscanf(fp,"%s%s%d",a,b,&c)==3){
        printf(fp, "%-10s %-10s %d\n",a,b,c);
        fclose(fp);
        }
你在循环里面关闭文件做什么
#6
yiyue1232020-05-13 09:50
对的,5楼说的对,文件最后程序结束的时候关闭。
整个程序改完之后应该是这样
程序代码:
#include <stdio.h>

int mian(void)
{
    FILE *fp = NULL;

    char b[100];
    int c;
    char a[100];

    if((fp=fopen("gifts.dat","r"))==NULL)
            printf("ファイルをオープンできません。\n");
        else
    {
                while(fscanf(fp,"%s%s%d",a,b,&c)==3)
        {
                    printf(fp, "%-10s %-10s %d\n",a,b,c);
               }
    }
        getchar ();
    fclose(fp);
        return 0;
}
#7
yiyue1232020-05-13 09:51
。。。我复制的你的,忘了改 mian 了...
#8
菜鸡742020-05-13 10:36
回复 6楼 yiyue123
刚刚试了一下还是运行不了
这是不是就是我电脑设置的问题了呢?
#9
菜鸡742020-05-13 10:38
回复 5楼 lin5161678
移到外面去了
但还是运行不了
说是运行pre LaunchTask”g++”后存在错误
请问这种情况有可能是之前设置的少了什么吗
#10
菜鸡742020-05-13 10:39
回复 4楼 forever74
谢谢大佬x
#11
菜鸡742020-05-13 10:43
诶 好像可以了 谢谢大佬们的帮助!
1