老牛来学习 发表于 2020-7-24 16:28:50

C文件问题

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

int main()
{
    FILE *fp;
    char str;
    fp = fopen("myfile.dat","w");
    fputs("abc",fp);
    fclose(fp);
    fp = fopen("myfile.dat","a+");
    fprintf(fp,"%d",28);
    rewind(fp);
    fscanf(fp,"%s",str);
    puts(str);
    fclose(fp);
}

这段代码为什么会输出abc28,其中的28不是用整型格式化输出的吗?这其中是怎么操作最后输出abc28的?

xiaosi4081 发表于 2020-7-24 16:31:36

数字可以变成字符(数字也有ascll码)

liuzhengyuan 发表于 2020-7-24 16:33:24

本帖最后由 liuzhengyuan 于 2020-7-24 16:34 编辑

你不就是在用 整型格式化 吗?

第 12 行
fprintf(fp,"%d",28);

老牛来学习 发表于 2020-7-24 17:02:28

xiaosi4081 发表于 2020-7-24 16:31
数字可以变成字符(数字也有ascll码)

我使用整型输入的28,那么变成字符也应该是28对应的ascii码啊,为什么会输出28。

老牛来学习 发表于 2020-7-24 17:15:08

老牛来学习 发表于 2020-7-24 17:02
我使用整型输入的28,那么变成字符也应该是28对应的ascii码啊,为什么会输出28。

我使用整型输入的28,那么变成字符也应该是28对应的ascii码啊,为什么会输出28。

liuzhengyuan 发表于 2020-7-24 17:21:53

老牛来学习 发表于 2020-7-24 17:15
我使用整型输入的28,那么变成字符也应该是28对应的ascii码啊,为什么会输出28。

你看看 3L 我的回答

老牛来学习 发表于 2020-7-24 19:36:32

liuzhengyuan 发表于 2020-7-24 17:21
你看看 3L 我的回答

我的理解是比如我用整型输入一个65,那么我用字符打出来的应该是A,为什么我这里以整型输入28,给它加到字符串里,打印出来的还是28?没理解您回答什么意思

liuzhengyuan 发表于 2020-7-25 10:16:36

本帖最后由 liuzhengyuan 于 2020-7-25 10:19 编辑

老牛来学习 发表于 2020-7-24 19:36
我的理解是比如我用整型输入一个65,那么我用字符打出来的应该是A,为什么我这里以整型输入28,给它加到 ...

因为你用是 %d 而不是%c。

这叫格式化
就是把其他数据类型转换为字符
但是不是所有转换都是根据 ascii 来的

%c 是根据 ascii 来的
但 %d 不是
页: [1]
查看完整版本: C文件问题