BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #40725同步于 2010/6/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【求助求助!】帮忙看看这个程序为啥总是有错误需要关闭呢。。

sad123
2010/6/24镜像同步3 回复
代码如下 我主要是想把一个字典读到一个结构体里 为了验证读进去了没有 我想先输出到一个文件里,看看是不是对了 结果总是提醒我错误需要关闭 编译没有错误 折腾了半天 求助啊 字典的格式是这样 A B_C D_E 其中A 也就是第一个空格之前的是要查的字 其中B_C D_E也就是第一个空格之后的是要查的字对应的结果 #include <stdio.h> #include <string.h> #define DICSIZE 1700 //dictionary的长度 #define EDICSIZE 100 //一对syl_pho的最大长度 struct DICTION //dictionary里syllable_phone对存放在结构体数组diction[DICSIZE]里 { char syl[SYLSIZE]; char pho[PHOSIZE]; }diction[DICSIZE]; int main() { FILE *fpdic = fopen("d:\\Artifical_Lattice\\IOA_SAIT.dic.txt", "rt");//打开syllable-phone词典IOA_SAIT.dic.tone FILE *fpout = fopen("d:\\Artifical_Lattice\\K009_test_phone.txt","wt+");//创建 phone 输出文本K009_test_hmm.txt char syl_pho[EDICSIZE];//创建数组syl_pho[],存放一组syl_pho对 int n; struct DICTION diction[DICSIZE]; for(n=0 ; fgets(syl_pho , EDICSIZE , fpdic)!=NULL ; n++ ) { char c=' '; struct DICTION *p; p=diction; char *p1=strchr(syl_pho,c); char *p2=syl_pho; int i,j=0; for(i,j=0; *(syl_pho+i)!='\n' ; i++) { if(i < (p1-p2)) { *((p+n)->syl+j)=*(syl_pho+i); j++; } else if(i==(p1-p2)) { *((p+n)->syl+j)='\0'; j=0; } else if(i > (p1-p2)) { *((p+n)->pho+j)=*(syl_pho+i); j++; } } *((p+n)->pho+j)='\0'; fprintf( fpout, "%s\t%s\n" , (p+n)->syl , (p+n)->pho ); } }
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
hs机器人#1 · 2010/6/24
弱弱的问一句,你会调试么?会了调试之后,你可以1、知道错误导致终止的是在哪一行。2、不必为了验证读的是否正确非得再写入文件。
sad123机器人#2 · 2010/6/25
调通了 但是不会调试。。 感觉这样效率很低,干事情也很麻烦。。 弱弱的问一句。。哪里查怎么调试。。 我知道怎么设置断点,但是不知道设了那个红点点之后有啥用,怎么查看变量之类的变成了什么。。 【 在 hs 的大作中提到: 】 : 弱弱的问一句,你会调试么?会了调试之后,你可以1、知道错误导致终止的是在哪一行。2、不必为了验证读的是否正确非得再写入文件。
DrJan机器人#3 · 2010/6/25
写日志吧 靠谱