老牛来学习 发表于 2020-5-5 19:09:05

C语言文件编码问题

#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE *fp;
    char *a;
    char *ch = "abcasdf";
    if((fp = fopen("abc.txt","w"))==NULL)
    {
      printf("文件打开失败!");
    }

    fputs(ch,fp);

    fclose(fp);
    if((fp = fopen("abc.txt","r"))==NULL)
    {
      printf("文件打开失败!");
    }
    fgets(a,2,fp);
    printf("%s",a);
    fclose(fp);
}


这段代码一直弹错误问题,百度说是因为复制导致编码不一致,但是我啥也没复制,不知道为啥出现这个问题?

ba21 发表于 2020-5-5 19:17:43

错误呢?

人造人 发表于 2020-5-5 19:18:58

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char *a;
    char *ch = "abcasdf";
    if((fp = fopen("abc.txt","w"))==NULL)
    {
      printf("文件打开失败!");
    }

    fputs(ch,fp);

    fclose(fp);
    if((fp = fopen("abc.txt","r"))==NULL)
    {
      printf("文件打开失败!");
    }
    //fgets(a,2,fp);
    printf("%s\n","ok");
    fclose(fp);
    return 0;
}

人造人 发表于 2020-5-5 19:20:25

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char *a = malloc(100);
    char *ch = "abcasdf";
    if((fp = fopen("abc.txt","w"))==NULL)
    {
      printf("文件打开失败!");
    }

    fputs(ch,fp);

    fclose(fp);
    if((fp = fopen("abc.txt","r"))==NULL)
    {
      printf("文件打开失败!");
    }
    fgets(a,100,fp);
    printf("%s\n",a);
    fclose(fp);
    free(a);
    return 0;
}

老牛来学习 发表于 2020-5-5 20:31:02

人造人 发表于 2020-5-5 19:20



我用你的代码一样报错,是什么问题?之前那个指针没赋初值改了

人造人 发表于 2020-5-5 20:53:18

老牛来学习 发表于 2020-5-5 20:31
我用你的代码一样报错,是什么问题?之前那个指针没赋初值改了

这个警告应该不用管也没问题
把你修改后的代码发出来

人造人 发表于 2020-5-5 20:54:24

老牛来学习 发表于 2020-5-5 20:31
我用你的代码一样报错,是什么问题?之前那个指针没赋初值改了

用我的代码报错?两个都错?报了什么错?
截图看看

老牛来学习 发表于 2020-5-5 20:54:57

人造人 发表于 2020-5-5 20:53
这个警告应该不用管也没问题
把你修改后的代码发出来

我用你的代码也有这个警告,修改完了跟你一样。‘
#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char *a = malloc(100);
    char *ch = "abc\nasdf";
    if((fp = fopen("abc.txt","w"))==NULL)
    {
      printf("文件打开失败!");
    }

    fputs(ch,fp);

    fclose(fp);
    if((fp = fopen("abc.txt","r"))==NULL)
    {
      printf("文件打开失败!");
    }
    fgets(a,2,fp);
    printf("%s\n",a);
    fclose(fp);
    free(a);
}

人造人 发表于 2020-5-5 20:57:01

老牛来学习 发表于 2020-5-5 20:54
我用你的代码也有这个警告,修改完了跟你一样。‘

报了什么错?截图

人造人 发表于 2020-5-5 20:58:18

老牛来学习 发表于 2020-5-5 20:54
我用你的代码也有这个警告,修改完了跟你一样。‘

那个是提示编码不对的,不用管应该也没问题
你用的是什么编辑器?编译器?

Mondayisgood 发表于 2020-5-5 21:01:11

用记事本
打开
另存为
选择编码 ANSI
再试
都已经提示很清楚了
文件编码为UTF8
用UE十六进制模式打开,可以看到文件头
你的编译器不支持 U8编码
vs2019是支持的

老牛来学习 发表于 2020-5-5 21:11:08

人造人 发表于 2020-5-5 20:58
那个是提示编码不对的,不用管应该也没问题
你用的是什么编辑器?编译器?

Code blocks

老牛来学习 发表于 2020-5-5 21:13:11

Mondayisgood 发表于 2020-5-5 21:01
用记事本
打开
另存为


好了,但是之前一直用的UTF-8都可以艾{:10_277:}
页: [1]
查看完整版本: C语言文件编码问题