当前位置:  技术问答>linux和unix

strcmp函数段错误

    来源: 互联网  发布时间:2016-12-28

    本文导语:  #include #include #include 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;    ...

#include
#include
#include

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("%dn",value);
}

|

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


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

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

str 没有分配空间就赋值了,其实与一楼说的错误是同一类型,str改为数组就ok。

|

你要向str里写数据,所以必须要先申请好空间,char *str;只是声明了一个字符指针,但是并没有存储字符串的空间,所以改为char str[128]={0};

    
 
 

您可能感兴趣的文章:

  • 使用python实现strcmp函数功能示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • (gdb)b Asn1.c:342 if 0==strcmp(str, "XXXX")
  • g++,strcmp编译不通过??
  • C++实现strcmp字符串比较的深入探讨


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3