标题:文件的输入输出问题,输出出来后,信息乱码
只看楼主
Friendly
Rank: 1
等 级:新手上路
帖 子:3
专家分:3
注 册:2015-1-26
结帖率:0
已结贴  问题点数:20 回复次数:2 
文件的输入输出问题,输出出来后,信息乱码
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
struct
{
    FILE *pfile;
    char fname[20];
}file={NULL,"information"};
void list_file(void);
int main(void)
{
    int len;
    int age=0;
    char ch='y';
    char name[20];
    if(!(file.pfile=fopen(file.fname,"wb")))
    {
        printf("\nCannnot write file\n");
        exit(1);
    }
    do
    {
        fflush(stdin);
        printf("Please input name(letter<20)\n");
        gets(name);
        printf("Please input age\n");
        scanf("%d",&age);
        len=strlen(name);
        fwrite(&len,sizeof len,1,file.pfile);
        fwrite(name,len,1,file.pfile);
        fwrite(&age,sizeof(age),1,file.pfile);
        printf("\nDo you want to enter another(y/n)\n");
        scanf(" %c",&ch);
    }
    while(tolower(ch)=='y');
    fclose(file.pfile);
    list_file();
    system("pause");
    return 0;
}
void list_file(void)
{
    char name[20];
    int age;
    int len;
    if(!(file.pfile=fopen(file.fname,"rb")))
    {
        printf("\nCannot read file\n");
        exit(1);
    }
    while(fread(&len,sizeof len,1,file.pfile))
    {
   

        if(len<=20)
        {
            fread(name,len,1,file.pfile);----------------------用strlen(name)返回 3(假设输入qwe);
            printf("%-20s",name);------------------------------再次用strlen(name)返回 31;
            fread(&age,sizeof age,1,file.pfile);
            printf(" %d\n",age);
        }
        else
            {
                printf("Name too long,cannot show it\n");
                system("pause");
            }
                                                              

    }
    fclose(file.pfile);
}

搜索更多相关主题的帖子: color 信息 file 
2015-02-04 18:48
Friendly
Rank: 1
等 级:新手上路
帖 子:3
专家分:3
注 册:2015-1-26
得分:0 
我即使把最后的fread(name,len,1,file.pfile);
改为 fread(name,3,1,file.pfile);
然后输入asd
也是乱码
2015-02-04 19:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:20 
截圖,上傳文件。凡是問文件的問題,不提供相關文件,基本都是白問。

授人以渔,不授人以鱼。
2015-02-07 23:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-441768-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.481587 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved