返回信息流代码如下
我主要是想把一个字典读到一个结构体里
为了验证读进去了没有
我想先输出到一个文件里,看看是不是对了
结果总是提醒我错误需要关闭
编译没有错误
折腾了半天
求助啊
字典的格式是这样
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 );
}
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #40725同步于 2010/6/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【求助求助!】帮忙看看这个程序为啥总是有错误需要关闭呢。。
sad123
2010/6/24镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
调通了
但是不会调试。。
感觉这样效率很低,干事情也很麻烦。。
弱弱的问一句。。哪里查怎么调试。。
我知道怎么设置断点,但是不知道设了那个红点点之后有啥用,怎么查看变量之类的变成了什么。。
【 在 hs 的大作中提到: 】
: 弱弱的问一句,你会调试么?会了调试之后,你可以1、知道错误导致终止的是在哪一行。2、不必为了验证读的是否正确非得再写入文件。