求问一个c程问题

hyqy99 2019-11-23 06:20:54
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h> typedef struct node * pos; struct node//创建结构体 { char* data; pos next; }; int main(int argc, char* argv[]) { int i,j,k,m; char c,x[19]={0}; FILE *p; char a[500][19]; p=fopen("F:\\500.txt","r"); if(p==NULL) printf("fail\n"); else printf("success\n"); for(i=0;i<500;i++) { for(j=0;j<18;j++) { a[i][j]=fgetc(p); } a[i][18]=0; }//将文件中数据存到数组a中 fclose(p); for(i=0;i<500;i++) for(j=i;j<500;j++) if(strcmp(a[i],a[j])>0) { for(m=0;m<18;m++) { k=a[i][m]; a[i][m]=a[j][m]; a[j][m]=k;}} //排序 for(j=0;j<500;j++) printf("%s",a[j]); pos p1,p2,head,p0; head=NULL; p1=p2=(pos)malloc(sizeof(struct node)); for(i=0;i<500;i++)//创建链表 { if(i==0)head=p1; else p2->next=p1; p2=p1; p1=(pos)malloc(sizeof(struct node)); p2->data=a[i]; } p2->next=NULL; free(p1);free(p2); pos find(char x[], pos h); void dele(pos p); printf("请输入你要删除的东西:"); scanf("%s",x); p0=find(x,head); printf("%s",p0->data); dele(p0); printf("abc"); pos p3; p3=head; for (i=0;i<500;i++) { printf("%s",p3->data); p3=p3->next; } return 0; } pos find(char x[], pos h) {while((h->next!=NULL)&&(strcmp(h->next->data,x)!=0)) h=h->next; return h;} void dele(pos p) { p->next=p->next->next; } 这个程序就是有500行字符串 每个字符串都是18列,先读入文件得到了,然后排个序,接着按照排序结果建立链表,要实现输入某一行将那一行对应的字符串删除。dele死了链表删除,find是找到该行字符串前一行对应的位置,我gets输入的x肯定就是那原来的500行之一,但是为什么find函数里面strcmp就是不起作用呢,每次我试都是直接把while循环执行到了最后一个链表单元,真的是找错找疯了。。。。求大佬指教。。。问题就出在while循环那个strcmp上,可是我不知道为什么错了,为什么比较不出来0的结果。
...全文
1194 69 打赏 收藏 转发到动态 举报
写回复
用AI写文章
69 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
Ivy_Octopus 2020-01-01
  • 打赏
  • 举报
回复
兄弟你这个代码块缩进是真的要命
Silent__Rain 2019-12-03
  • 打赏
  • 举报
回复
打印一下日志或者是断点调试一下,看看到哪里
qq_41830095 2019-12-02
  • 打赏
  • 举报
回复
算法是有点长
土豆第一 2019-11-30
  • 打赏
  • 举报
回复
貌似是算法的问题
李吉吉吉吉 2019-11-30
  • 打赏
  • 举报
回复
我感觉是内存泄漏
bbdsds 2019-11-30
  • 打赏
  • 举报
回复
学习了,需要仔细检查
weixin_45945063 2019-11-29
  • 打赏
  • 举报
回复
程序没什么问题,逐条追踪一下
qq_41842671 2019-11-29
  • 打赏
  • 举报
回复
当时写过一个学生管理系统,差不多大部分功能和你一样,也是读取文件, 查找,删除……
南笙笙 2019-11-29
  • 打赏
  • 举报
回复
基本上都有解决的方案了
韩明君 2019-11-28
  • 打赏
  • 举报
回复
find的x不是char*,少了一个0x00 删除的话,加个判空,虽然有内存泄露但不会导致崩溃
qq_45841073 2019-11-28
  • 打赏
  • 举报
回复
加一。。。。。。。。。。。。
donwmufromdying 2019-11-28
  • 打赏
  • 举报
回复
你这种代码出错概率真的太高了。你结构体里的data就是祸乱之源。结构体里定义一个指针,太容易出错了。然后还把一个const char赋给它,也许将来在自己不知道的情况下还尝试释放指针。
fudonghaiaaaa 2019-11-27
  • 打赏
  • 举报
回复
条理不太清晰
  • 打赏
  • 举报
回复
dele函数里有一个内存泄露
yutiangen 2019-11-27
  • 打赏
  • 举报
回复
嗯嗯 但是真的感觉令人头秃
北徯 2019-11-27
  • 打赏
  • 举报
回复
找不出问题就调试鸭,调试是最好的解决办法
xingming8 2019-11-26
  • 打赏
  • 举报
回复
都是高手啊!
qq_45083065 2019-11-26
  • 打赏
  • 举报
回复
真脑壳痛╯﹏╰
努力的猪酸菌 2019-11-26
  • 打赏
  • 举报
回复
有那位大神解出来的话,跪服
加载更多回复(49)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧