Кодирование функции длины строки с использованием арифметики с указателями - PullRequest
0 голосов
/ 18 ноября 2018

Я нахожусь в классе CS для начинающих, изучая C, и нам было поручено написать функцию для поиска длины строки с использованием только строковых указателей. У меня есть следующий код:

#include <stdio.h>

int strlength(char* str);

int main() {
    char *str;
    int comp;

    printf("Please enter the string: ");
    scanf("%s", str);

    printf("The length of the string is: %d\n", strlength(str));
    return 0;
}

int strlength(char *str) {
    int length = 0;

    while(*str != '\0') {
        length++;
        str++;
    }
    return length;
}

Я не совсем уверен, откуда у меня ошибка сегментации. Я попытался создать второй указатель в функции strlength, равный str, и увеличить его, но это также вызывает ошибку сегментации. Любое понимание будет оценено!

1 Ответ

0 голосов
/ 18 ноября 2018
char *str;
int comp;

printf("Please enter the string: ");
scanf("%s", str);

Вы должны выделить память в куче (с malloc) для *str перед scanf.Если вы не хотите использовать malloc, измените его на char [число], чтобы он мог выделять память в стеке вместо кучи

...