| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1034 人关注过本帖
标题:一个简单的C语言程序,可是我不会改
取消只看楼主 加入收藏
Sai补天士
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-12-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
一个简单的C语言程序,可是我不会改
那个麻烦大家了
源程序:
#include <stdio.h>
#include <math.h>
#include <string.h>

int main ()
{FILE *fp;
 char ch;
 char A[10]={0};
 char B[10]={0};
 char C[10]={0};
 int i=0;
 int k=0;
 int j=0;

 fp=fopen("C:\\Users\\study\\20.TXT","r");
 if(fp==NULL)
     printf("error");
 else
     printf("ok");
while(!feof(fp))
{ switch(k){
             case 0:while((ch=fgetc(fp))!=',')
                    {
                        A[i]=ch;
                     i=i+1;
                    printf("%c",A[i-1]);}
                    A[i]='\0';
                     printf("\n");
                     k=1;
                    i=0;
                    
                    break;
             case 1:while((ch=fgetc(fp))!=',')
                    {if(ch==EOF){break;}
                        B[i]=ch;
                      i=i+1;
                    printf("%c",B[i-1]);}
                    B[i]=0;
                    printf("\n");
                    k=2;
                    i=0;
                    break;
             case 2:while((ch=fgetc(fp))!='\n');
                    k=3;
                    break;
             case 3:while((ch=fgetc(fp))!=',')
                    {   
                        C[i]=ch;
                     i=i+1;
                     printf("%c",C[i-1]);
                    }
                    printf("\n");
                    C[i]=0;
                    k=4;
                    i=0;
                    break;
             case 4:for(;C[i]!=0;i++)
                    {
                        A[i]=C[i];
                     printf("%c",A[i]);}
                    i++;
                    A[i]=0;
                    k=1;
                    i=0;
                    printf("\n");
                    break;}
}
printf("结束\n");
while(1);
return 1;
}
20.TXT 是这样的文本
0000028C,24,モンスターの スタミナを

000002A5,28,1 かいふくする ビスケット

000002C2,24,モンスターの スタミナを

000002DB,28,2 かいふくする ビスケット

000002F8,24,モンスターの スタミナを

00000311,26,いっぱいにする ビスケット

不过很长........
在运行后出现这样的提示:
“123.exe 中的 0xffffffff 处未处理的异常: 0xC0000005: 读取位置 0xffffffff 时发生访问冲突”

我曾经尝试过把
case 2:while((ch=fgetc(fp))!='\n');
                    k=3;
                    break;
改成
case 2:while((ch=fgetc(fp))!='\n'&&ch!=EOF);
                k=3;
               break;

结果没有任何改观,而且许多的输出变成了乱码,
麻烦大家帮我看一下哪里错了,谢谢了!
20.rar (4.05 KB)

附件是文本
               

搜索更多相关主题的帖子: C语言 
2009-12-26 20:53
Sai补天士
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-12-26
收藏
得分:0 
回复 2楼 广陵绝唱
你好,关于那个文本文件,我的目的不是修改,是验证,前面的那些数字是不是复合一定的关系
2009-12-26 21:13
Sai补天士
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-12-26
收藏
得分:0 
回复 楼主 Sai补天士
就好像
0000028C,24
000002A5,28

应该有(28C)H=652
       652+24+1=(2A5)H
验证这些的部分我还没有编。
想先把取数据的部分写好,却悲剧了...........
2009-12-26 21:16
Sai补天士
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-12-26
收藏
得分:0 
回复 5楼 广陵绝唱
谢谢你,不过我后面对日文的处理是
case 2:while((ch=fgetc(fp))!='\n');
                    k=3;
                    break;

这样的话,不能够跳过么?

而且我的程序怎么说呢,错误只是那个什么0xffffff无法访问,
当然你说的也很有道理,如果用char无法储存日文的话,请问有没有什么建议?
2009-12-26 21:27
Sai补天士
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-12-26
收藏
得分:0 
回复 7楼 广陵绝唱
恩是这样的
2009-12-27 08:26
Sai补天士
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-12-26
收藏
得分:0 
回复 9楼 广陵绝唱
谢谢你给我指出了一个改进的方向。
2009-12-29 11:07
Sai补天士
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-12-26
收藏
得分:0 
回复 10楼 kof888
哦,指针表导出后有可能会有码表没写进去这样验证一下。
2009-12-29 11:08
快速回复:一个简单的C语言程序,可是我不会改
数据加载中...
 
   



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

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