求助!!这个程序出了到底什么问题?为什么运行不了? 40C
 #include <stdio.h>
#include <stdlib.h>
#include "list.h"


int main()
{
    struct Word *head;
    head=creatLink();
    listToFile(head);
    return 0;
}

 #ifndef _LIST_H
#define _LIST_H

struct Word
{
     char japanese[20];//日文
     char kana[20];//假名
     int accent;//声调
     char property[10];//词性
     char chinese[30];//中文
     struct Sentense *head2;//句子结构体链表的头指针
     struct Word *next;//下一个结点地址
};

struct Sentense
{
     char sentense[50];//例句
     struct Sentense *next;//下一个结点地址
};

FILE *inputOneWord_F(struct Word *p,FILE *fp);
struct Word *creatLink();
FILE *outputOneWord_F(struct Word *t,FILE *fp);
void listToFile(struct Word *head);

#endif // _LIST_H

 #include <stdio.h>
#include <stdlib.h>
#include "list.h"
#define LEN sizeof(struct Word)
#define LEN2 sizeof(struct Sentense)


//将文件中一个Word结构体中的所有数据读入p所指向的链表结点,返回值为指针目前在文件中所在的位置
FILE *inputOneWord_F(struct Word *p,FILE *fp)
{
     char a;
     fscanf(fp,"%s%s%d%s%s",p->japanese,p->kana,&p->accent,p->property,p->chinese);
     struct Sentense *g,*tail=NULL; //新建Sentense结构体单链表

     p->head2=NULL;
     while(1){
        fgetc(fp);//吸收换行符
        a=fgetc(fp);//通过是否为换行符来判断当前单词有无例句
        if(a=='\n'||feof(fp)) break;   //说明此单词无例句返回指针目前在文件中所在的位置,进行下一个单词的读取
        else{
          fseek(fp,-1l,SEEK_CUR);//光标向前一个字符
          fputc(a,fp);//将刚才从文件读取的字符按原样写入文件(位置不变)
          g=(struct Sentense*)malloc(LEN2);//
          fscanf(fp,"%s",g->sentense);
          if(p->head2==NULL)p->head2=g;//如果链表为空,新建立的结点就是链表的头结点
          else tail->next=g;
          tail=g;//tail永远指向链表的尾结点

         }
     }
     tail->next=NULL;
     return fp;
}



 //在程序执行之初将上一次存储在文件中的全部数据读入新建Word结构体单链表,函数返回单链表头指针
struct Word *creatLink()
{
     struct Word *p,*head=NULL,*rear=NULL;
     FILE *fp;
     fp=fopen("WordList.txt","r");
     if(fp==NULL)
     {
          printf("单词表为空!");
          return head;
     }
     p=(struct Word*)malloc(LEN);
     fp=inputOneWord_F(p,fp);//更改指针在文件中所在的位置
     while(!feof(fp))
     {
          if(head==NULL)head=p;
          else rear->next=p;
          rear=p;
          p=(struct Word*)malloc(LEN);
          fp=inputOneWord_F(p,fp);
     }
     rear->next=p;
     rear=p;
     rear->next=NULL;
     fclose(fp);
     return head;
}

FILE *outputOneWord_F(struct Word *t,FILE *fp)
{

     fprintf(fp,"\n%s %s %d %s %s\n",t->japanese,t->kana,t->accent,t->property,t->chinese);
     struct Sentense *p;
     p=t->head2;  //p为指向Word结构体中Sentense结构体链表的头指针;
     while(p!=NULL)
     {
          fprintf(fp,"%s\n",p->sentense);
          p=p->next;
     }
     return fp;
}


//程序运行结束之际将链表中的数据全部写入文件
void listToFile(struct Word *head)
{
     FILE *fp;
     fp=fopen("WordList2.txt","w");
     struct Word *p;
     p=head;
     while(p!=NULL)
     {
          fp=outputOneWord_F(p,fp);
          p=p->next;
     }
     fclose(fp);
}





7个回答

你得把相应的文件传上来,wordlist.txt 这些文件,不然怎么做测试

多打log。在一些关键点打上log,很容易看出哪里出问题

图片说明

建议你先说明一下,你这个程序的设计意图、设计思路,另外,你可以通过断点调试查看问题出现在哪个环节。

查检一下环境配置,以及编码格式试试

你的程序要实现什么功能,你的算法逻辑要搞清楚,另外检查一下所需程序包是不是都装好了

一步一步调试,运行不了具体是什么情况,是运行后弹窗崩溃,还是运行后达不到你想要的结果?一般崩溃大都是由于内存原因,比如
使用了未分配内存的指针,使用了未初始化的内存,可以alt+6调出内存窗口观看各变量的内存情况;如果程序可以运行但是达不到你想
要的效果,那就要仔细想想每一步的逻辑,观察变量的值是否都符合预期。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

相似问题

1
大家好,我是python的初学者,遇到了点问题解决不了了,向大家求助。
4
求助python操作mysql问题,运行过一段时间,就不显示好象没有执行一样。程序代码如下。
9
萌新求助Android Studio工程编译没问题,运行app就闪退,我试了别的代码,只要修改了xml文件也会闪退。
1
程序应该没问题,但就是运行不了,向大佬求助
1
新人求助,关于c语言程序运行结果的问题
2
小白求助!!VS2017 C++控制台程序为什么会输出白方框?
1
C# SQL数据库间歇性异常 A network-related or instance-specific error
1
vc++2010一运行就弹出----未能加载文件或程序集问题对话框------请大佬帮帮忙,怎么解决这个问题?
1
为什么我的链表在运行时会卡死或者无法存取信息?
0
GitHub下载的豆瓣爬虫程序,运行出现Process finished with exit code 0,求助
1
求助C语言的猜数字游戏
1
JavaScript的Bootstrap框架下又一个程序运行没反应,求助
2
求助,Intellij idea和Android Studio都启动失败
0
微信开发者工具运行时报错,求助!!!
0
求助QT大佬有关qt on android上的问题
0
求助:运行matlab的m文件,总是错误他显示“已达到最大递归限制 500。“”
0
python+kivy开发APP中文显示问题求助
1
新手求助!!c++串口通讯,缓冲区设置失败,是结构体指针设置错误吗?求指导。
1
关于python打包成.exe运行文件时,执行出现了failed to execute script,求助
1
求助一下关于cocos Js =>的问题