吴贤炬 发表于 2022-4-7 23:56:44

为什么我要的是结构体具体的一个成员,但却输出了所有成员

struct Account
{
        char cardNum;
        char userName;
        char balance;
};
char ch;
        FILE* fp;
        if ((fp=fopen("D:\\华软2021-2022\\c2\\ATM模拟机\\accounts.txt", "r")) == NULL) {
                printf("文件打开错误");
                exit(0);
        }
        struct Account user;
        fgets(&user, sizeof(user), fp);
        fclose(fp);
        puts(user.cardNum);

ba21 发表于 2022-4-8 00:02:58

文件读取来后有'\0'分割?
写入的时候就要注意结构问题 了。写入也要把'\0写入进去'

吴贤炬 发表于 2022-4-8 00:38:44

ba21 发表于 2022-4-8 00:02
文件读取来后有'\0'分割?
写入的时候就要注意结构问题 了。写入也要把'\0写入进去'

我是直接在txt文件里写的数据,怎么加'\0'?

ba21 发表于 2022-4-8 10:42:47

吴贤炬 发表于 2022-4-8 00:38
我是直接在txt文件里写的数据,怎么加'\0'?

直接在txt文件里写的数据
那你就编程用空格实现分割。

吴贤炬 发表于 2022-4-8 11:20:21

ba21 发表于 2022-4-8 10:42
直接在txt文件里写的数据
那你就编程用空格实现分割。

其它正常,但输出cardNum会把名字也输出了,这是为什么

ba21 发表于 2022-4-8 11:27:16

吴贤炬 发表于 2022-4-8 11:20
其它正常,但输出cardNum会把名字也输出了,这是为什么

直接在txt文件里写的数据
那你就编程用空格实现分割。

12313'\0'张瑚'\0'1000
讲得还不够清楚?既然你是手动写的txt,特殊字符'\0'自然没法写。哪你就只能编程处理空格。

C 字符串的输出用法遇'\0'结束。
puts函数输出用法遇'\0'结束。

吴贤炬 发表于 2022-4-8 12:32:58

ba21 发表于 2022-4-8 11:27
直接在txt文件里写的数据
那你就编程用空格实现分割。



感谢
页: [1]
查看完整版本: 为什么我要的是结构体具体的一个成员,但却输出了所有成员