strcmp函数段错误

yy_112233 2011-09-05 09:09:02
#include<stdlib.h>
#include<stdio.h>
#include<string.h>

int main(){
FILE *file;
char *str;
char *leftkey;
char *rightvalue;
char *key="workmodel";
file=fopen("./param.conf","r");
if(file==NULL){
printf("open file error!\n");
exit(0);
}
while(strlen(fgets(str,100,file))!=0){
char *p;
p=strtok(str,"=");
if(p) leftkey=p;
else break;
if(strcmp(key,leftkey)==0){
p=strtok(NULL,"=");
if(p) rightvalue=p;
break;
}
}
fclose(file);
int value=atoi(rightvalue);
printf("%d\n",value);
}
...全文
506 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphiwcdj 2011-09-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jialejiahi 的回复:]

char *str;
while(strlen(fgets(str,100,file))!=0){

str 没有分配空间就赋值了,其实与一楼说的错误是同一类型,str改为数组就ok。
[/Quote]
你要向str里写数据,所以必须要先申请好空间,char *str;只是声明了一个字符指针,但是并没有存储字符串的空间,所以改为char str[128]={0};
yy_112233 2011-09-06
  • 打赏
  • 举报
回复
感谢各位,问题解决了,谢谢
jialejiahi 2011-09-05
  • 打赏
  • 举报
回复
char *str;
while(strlen(fgets(str,100,file))!=0){

str 没有分配空间就赋值了,其实与一楼说的错误是同一类型,str改为数组就ok。
yy_112233 2011-09-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 feiyinzilgd 的回复:]



但是上面的这句话并没有给key分配空间。只不过是让key指向一个常量。但是常量是不可修改的。所以段错误
char key[] = "workmodel"这样就不会有段错误了。
[/Quote]

好像还是有段错误。。。
谭海燕 2011-09-05
  • 打赏
  • 举报
回复

char *key="workmodel"//这里申明了一个指向字符串的指针key,指向常量“workmodel”


但是上面的这句话并没有给key分配空间。只不过是让key指向一个常量。但是常量是不可修改的。所以段错误
char key[] = "workmodel"这样就不会有段错误了。

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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