| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 813 人关注过本帖
标题:文件读写的问题 运行的是乱码
只看楼主 加入收藏
子楠
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:111
专家分:164
注 册:2013-4-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
文件读写的问题 运行的是乱码
#include <stdio.h>
#include <stdlib.h>
void main ()
{
    FILE *fp;
    char ch1[5];
    char ch2[5];
    char ch3[5];
    int a,b;
    if((fp=fopen("Student.txt","r"))==NULL)
    {
        printf("Cannot open file strike any key exit!");
        getchar();
        exit(1);
    }
   
    while(!feof(fp))
    {
        fscanf(fp,"%d%s%s%d%s",&a,ch1,ch2,&b,ch3);
        printf("%5d%s%s%5d%s",a,ch1,ch2,b,ch3);
    }
   
    fclose(fp);
}//运行的是乱码,哪里出错了,求解
搜索更多相关主题的帖子: include file 
2014-02-27 16:02
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:15 
文件里的内容是什么

DO IT YOURSELF !
2014-02-27 16:53
klapset
Rank: 4
等 级:业余侠客
威 望:2
帖 子:71
专家分:234
注 册:2014-2-27
收藏
得分:5 
我没猜错的话 楼主想用空格作为分界,这样当然不行了。只有先读出来一条,在解析。可以试试stream
2014-02-27 17:08
子楠
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:111
专家分:164
注 册:2013-4-9
收藏
得分:0 
回复 2楼 wp231957
if((fp1=fopen("Sc.txt","r"))==NULL)
    {
        printf("can't open the Sc.txt file\n");
        getchar();
        exit(1);
    }
        while(p)
        {
            while(!feof(fp1))
            {
                if(m++==1)
                    fscanf(fp1,"%s%s%s",ch1,ch2,ch3);
                else
                {
                    fscanf(fp1,"%d%d%d",&a,&b,&c);
                    printf("%5d%5d%5d\n",a,b,c);
                    if(p->Sno==a)
                    {
                        p->Cno[i++]=b;
                        p->Grade[j++]=c;
                        printf("%5d%5d\n",p->Cno[i-1],p->Grade[i-1]);
                    }
                }
            }
                        rewind(fp1);//重新到文件的开头
            p=p->next;
            i=j=0;
        }
p是链表的头指针,执行第二次的外循环输出来文件的就是乱码。文件就是关于成绩学号什么的
2014-03-01 15:35
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
把文件打包发上来我帮你看看  没有文件没法测试代码

DO IT YOURSELF !
2014-03-01 15:40
子楠
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:111
专家分:164
注 册:2013-4-9
收藏
得分:0 
回复 5楼 wp231957
新建文件夹.zip (2.39 KB)
2014-03-01 16:00
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>
#include <malloc.h>

int main ()
{
    FILE *fp;
    char ch1[9]={'\0'};
    char ch2[11]={'\0'};
    char ch3[11]={'\0'};
    char ch4[11]={'\0'};
    char ch5[12]={'\0'};
    if((fp=fopen("Student.txt","rb"))==NULL)
    {
        printf("Cannot open file strike any key exit!");
        return 0;
    }
    fseek (fp ,0, SEEK_END); 
    int lsize = ftell (fp); 
    fseek (fp ,0, SEEK_SET); 
    char * rbuf = (char*) malloc (sizeof(char)*lsize+1); 
    memset(rbuf,'\0',lsize+1);
    fread(rbuf,1,lsize,fp);
    int i=0;
    while(1)
    {
        strncpy(ch1,rbuf+i,8);
        i+=8;
        strncpy(ch2,rbuf+i,10);
        i+=10;
        strncpy(ch3,rbuf+i,10);
        i+=10;
        strncpy(ch4,rbuf+i,10);
        i+=10;
        strncpy(ch5,rbuf+i,11);
        i+=11;
        printf("%8s%10s%10s%10s%11s",ch1,ch2,ch3,ch4,ch5);
        memset(ch1,'\0',9);
        memset(ch2,'\0',11);
        memset(ch3,'\0',11);
        memset(ch4,'\0',11);
        memset(ch5,'\0',12);
        if(i>lsize) break;
    }
    free(rbuf);
    fclose(fp);
    return 0;
}


[ 本帖最后由 wp231957 于 2014-3-1 18:13 编辑 ]

DO IT YOURSELF !
2014-03-01 18:10
子楠
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:111
专家分:164
注 册:2013-4-9
收藏
得分:0 
回复 7楼 wp231957
改动这么大,以解决,谢了
2014-03-02 23:56
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
回复 6楼 子楠
程序代码:
#include <stdio.h>
#include <string.h>

int main()
{
    FILE* fp = fopen( "Student.txt", "r" );
    if( !fp )
    {
        printf( "%s\n", "Cannot open the file." );
        return 1;
    }

    { // table header
       

        for( char buf[260]; fgets(buf,sizeof(buf)/sizeof(buf[0]),fp); )
        {
            printf( "%s", buf );

            if( buf[strlen(buf)-1] == '\n' )
                break;
        }
    }

    { // table content
        int  Sno;
        char Sname[13];
        char Ssex[3];
        int  Sage;
        char Sdept[3];

        while( fscanf(fp,"%d%s%s%d%s",&Sno,Sname,Ssex,&Sage,Sdept) == 5 )
            printf( "%d\t%s\t%s\t%d\t%s\n", Sno,Sname,Ssex,Sage,Sdept );
    }

    fclose(fp);
    return 0;
}
2014-03-03 09:11
快速回复:文件读写的问题 运行的是乱码
数据加载中...
 
   



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

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