当前位置: 技术问答>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);
}
#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。
while(strlen(fgets(str,100,file))!=0){
str 没有分配空间就赋值了,其实与一楼说的错误是同一类型,str改为数组就ok。
|
你要向str里写数据,所以必须要先申请好空间,char *str;只是声明了一个字符指针,但是并没有存储字符串的空间,所以改为char str[128]={0};