Добавление символа в строку, удаление и печать строки в c - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь создать программу, которая добавляет письмо, которое вы даете к текущей строке, которая у него есть.У меня проблемы почти во всех областях, так как если я пытаюсь добавить письмо, это дает мне «ошибку сегментации».Я добавил комментарий о том, что должен делать каждый раздел. Буду признателен за помощь в этом проекте.

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

        int main(void) {
        int choice;
        char str[20];
        char str1;

    while(1) {
        printf("Give your choice: "); //Asks the choice from the menu
        scanf("%i", &choice);

        if(choice == 1) { //This choice adds a letter to the (empty) string
            printf("Give a letter: ");
            scanf("%s", str); 
            strcat(str, str1); }

        else if(choice == 2) { //choice 2 clears the string
            printf("");
            scanf("%s", str1); }

        else if(choice == 3) { //choice 3 prints what's in the string
            printf("%s", str1); }

        else { //if choice is wrong, it ends the program
            printf("Faulty input!\n");
            break; }

        }   }

Спасибо!

1 Ответ

0 голосов
/ 19 января 2019

Этот выбор добавляет букву в (пустую) строку

scanf("%s", str); 
strcat(str, str1);

Здесь вы не добавляете букву в существующую строку, а очищаете строку и повторно вводите ввод.Кроме того, передача char в strcat приводит к неопределенному поведению, так как strcat ожидает, что его аргументы будут char * и null завершен.


Измените его на как показано ниже.

scanf(" %c", &str1); //Takes single char
int len = strlen(str); //Finds the length
str[len] = str1; // Appends the char
str[len + 1] = '\0'; //null terminates the string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...