【发布时间】:2018-03-12 21:04:29
【问题描述】:
当我想运行可执行文件时出现分段错误错误
void lowerupper(char *s){
int i ;
int a = strlen (s);
printf("%d\n", a);
//fails here segmentation fault
for (i=0 ; i < a-1 ; i++){
if( (s[i] >= 97) && (s[i] <= 122)){
s[i] = s[i] - 32;
}
}
}
int main(void) {
char* string1 = 'HeLlo wOrlD';
printf("%s\n", string1);
lowerupper(string1);
printf("%s\n", string1);
return 0;
}
【问题讨论】:
-
是的。我能做些什么来纠正它? :
-
也许但是循环
for (i=0 ; i < a-1 ; i++)是错误的,因为它忽略了字符串中的最后一个字符。strlen不包括nul终止符。应该是i < a
标签: c segmentation-fault uppercase lowercase