对于下面的代码,我得到了
Segmentation fault (core dumped)
错误消息,有人可以帮我吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
char s[] = "helloWorld";
int i;
for(i = 1; i < strlen(s); i++)
{
printf("Letter is %sn", s[i]);
}
return(0);
}
printf("Letter is %sn", s[i]);
错了,%s
期待一个const char *
,而你却在给它一个char
。将此行更改为
printf("Letter is %cn", s[i]);
因为%c
格式说明符用于打印单个字符。
此外,在 C 中,数组从零开始,因此您也应该使用 i = 0;
将i
初始化为零。
您正在逐个字符打印,因此请使用%c
而不是%s
。
%s
需要一个字符串,但s[i]
实际上是一个字符。
还有每次你打电话给strlen(s)
。而且strlen
没有改变,所以最好对它使用一个变量,在进入循环之前只调用一次。
像这样更优化的方式:
int len=strlen(s);
for(i = 0; i < len; i++)
{
printf("Letter is %cn", s[i]);
}