Почему в моем коде возникает ошибка сегментации? - PullRequest
0 голосов
/ 02 марта 2019

Я получаю ошибку сегментации, как я могу это исправить.Я пробовал больше вариантов, но каждый раз получаю ошибку сегментации, когда использую операторы if.Мой код выглядит примерно так:

#include <stdio.h>
#include <string.h>

int main()
{
    int i;
    char *sentence[300];
    fgets(*sentence,300,stdin);
    int length=strlen(*sentence);
    for(i=0;i<length;i++){
        if(sentence[i]=="a")
            printf("qwer");
        else if(sentence[i]=="b")
            printf("asdf");
        else if(sentence[i]=="c")
            printf("zxcv");
//      ...
    }
    return 0;
}

1 Ответ

0 голосов
/ 02 марта 2019

Первое, что вы делаете неправильно, это:

char *sentence[300];

Похоже, вы пытаетесь создать буфер из 300 символов, но на самом деле вы создаете массив300 указателей символов.Измените это на:

char sentence[300];

Затем вы хотите изменить это:

fgets(*sentence,300,stdin);

на

fgets(sentence,sizeof(sentence),stdin);

Затем вы хотите изменить

int length=strlen(*sentence);

до

int length=strlen(sentence);

Вы должны хорошо понимать, как работают строки в C. Если вы еще не прочитали хорошую вводную книгу по C, начните с нее.C - это не то, что вы собираетесь узнать, просто читая случайные страницы в Интернете и StackOverflow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...