对于下面的代码,我得到了
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 %s\n", s[i]);
}
return(0);
}
答案 0 :(得分:3)
printf("Letter is %s\n", s[i]);
错误,%s
期望const char *
,而您正在给它char
。将此行更改为
printf("Letter is %c\n", s[i]);
因为%c
格式说明符用于打印单个字符。
此外,在C中,数组是从零开始的,因此您应该使用i
将i = 0;
初始化为零。
答案 1 :(得分:2)
您要逐个字符打印,因此请使用%c
代替%s
。
%s
需要一个字符串,但s[i]
实际上是一个字符。
每次拨打strlen(s)
时也是如此。并且strlen
没有改变,所以最好使用一个变量并在进入循环之前只调用一次。
更优化的方式:
int len=strlen(s);
for(i = 0; i < len; i++)
{
printf("Letter is %c\n", s[i]);
}