проблема с использованием функции печати, не может напечатать строку - PullRequest
0 голосов
/ 06 июля 2019

когда вход имеет статус «да». Строка s, кажется, не может быть напечатана.

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

int main() {

    char name[20],sta[3];
    scanf("%s",&name);
    scanf("%s",&sta);
    if((strcmp("Yes",sta)==0)||(strcmp("yes",sta)==0))
        printf("Mrs.%s",name);
    if((strcmp("No",sta)==0)||(strcmp("no",sta)==0))
        printf("Ms.%s",name);
    return 0;
}

1 Ответ

3 голосов
/ 06 июля 2019

Я улучшил ваш код, основываясь на предложениях в комментариях.

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

int main() {
    char name[20] = {0}, 
            sta[4] = {0};

    scanf("%s", name);
    scanf("%s", sta);

    if ((strcmp("Yes", sta) == 0) || (strcmp("yes", sta) == 0))
        printf("Mrs.%s\n", name);

    if ((strcmp("No", sta) == 0) || (strcmp("no", sta) == 0))
        printf("Ms.%s\n", name);

    return 0;
}
  • Сначала создан sta размера 4, чтобы в него помещались 3 символа «Да» вместе с '\0' терминатором.
  • scanf() не требует оператора & для символьных строк.
  • Инициализированный массив символов для '\0' (эквивалент ASCII 0).
  • Удалены ненужные заголовочные файлы и немного улучшено форматирование.
...