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期待してconst char *いますが、 を与えています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]実際には char です。

また、あなたが電話しているたびにstrlen(s)。Andstrlenは変更されていないため、1 つの変数を使用して、ループに入る前に 1 回だけ呼び出すことをお勧めします。

このようなより最適化された方法:

int len=strlen(s);
for(i = 0; i < len; i++)
    {
        printf("Letter is %c\n", s[i]);
    }
于 2012-12-09T14:57:09.200 に答える