【发布时间】:2019-03-27 05:58:43
【问题描述】:
当我运行此代码时,我收到一个错误segmentation fault (core dumped)。我看到错误在于“ printf("%c", first(s));",似乎将字符/字符串传递给函数不是正确的方法?如果不是,那我的代码有什么问题?
#include <stdio.h>
char first(char *str);
char first(char *str){
int L=0;
int a[127]={0};
for (int i=0; i<127; i++){
a[i]=i+1;
}
while (str != '\0'){
for(int d=1; d<127; d++){
if(str[L]==(char)d){
if (a[L]>0){
a[L]=0;
L++;
break;
}
else if(a[L]==0){
a[L]=-1;
L++;
break;
}
else{
L++;
break;
}
}
}
}
for(int i=0; i>127; i++){
if(a[i]==0)
return (char)(i+1);
}
return '\0';
}
int main()
{
char s="blazqnqbla";
printf("%c", first(s));
return 0;
}
【问题讨论】:
-
措辞错误。
core转储很可能不是来自您的编译器,而是在运行通过编译源代码生成的可执行文件时。该错误在您的程序中,而不是在编译器中。阅读how to debug small programs -
您的字符指针未正确声明。将
char s="blazqnqbla";更改为char *s="blazqnqbla"; -
'while (str!= '\0')' 也是有问题的。您无法将 char* 与 char 进行比较
-
尝试编译时出现警告
-Wall -Wextra -pedantic。
标签: c string function pointers char