0

对于下面的代码,我得到

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);
}
4

2 回答 2

3
printf("Letter is %s\n", s[i]);

是错误的,%s期望 a const char *,而你给它 a char。将此行更改为

printf("Letter is %c\n", s[i]);

因为%c格式说明符用于打印单个字符。

此外,在 C 中,数组是从零开始的,因此您也应该使用初始化i为零i = 0;

于 2012-12-09T14:55:12.447 回答
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]);
    }
于 2012-12-09T14:57:09.200 回答