Как перебрать строку в C? - PullRequest
47 голосов
/ 09 июля 2010

Прямо сейчас я пытаюсь это:

#include <stdio.h>

int main(int argc, char *argv[]) {

    if (argc != 3) {

        printf("Usage: %s %s sourcecode input", argv[0], argv[1]);
    }
    else {
        char source[] = "This is an example.";
        int i;

        for (i = 0; i < sizeof(source); i++) {

            printf("%c", source[i]);
        }
    }

    getchar();

    return 0;
}

Это также НЕ работает:

char *source = "This is an example.";
int i;

for (i = 0; i < strlen(source); i++){

    printf("%c", source[i]);
}

Я получаю ошибку

Необработанное исключение в 0x5bf714cf (msvcr100d.dll) в Test.exe: 0xC0000005: нарушение доступа при чтении в позиции 0x00000054.

(в переводе с немецкого)

Так что не так с моим кодом?

Ответы [ 12 ]

0 голосов
/ 09 июля 2010

Замените sizeof на strlen, и он должен работать.

0 голосов
/ 09 июля 2010

Просто измените sizeof с помощью strlen.

Как это:

char *source = "This is an example.";
int i;

for (i = 0; i < strlen(source); i++){

    printf("%c", source[i]);

}
...