Почему моей переменной присваивается значение 0, несмотря на пользовательский ввод? - PullRequest
1 голос
/ 09 октября 2019

Я устанавливаю программу на C, которая манипулирует строками, в которые пользователь вводит количество переходов и ячеек, а также строку, которой он хотел манипулировать, и начало строки и «начальную строку»

Пользователь будет вводить информацию построчно, поэтому я решил использовать «scanf», однако, все мои переменные, похоже, работают, за исключением целого числа переходов, в котором оно постоянно присваивается 0, несмотря на ввод пользователя.

int main()
{
    int num;
    int changes;
    char string[10];
    char startingString[25];

    scanf("%d", &num);
    scanf("%d", &changes);
    scanf("%s", string);
    scanf("%s", startingString);

    printf("number: %d\n",num);
    printf("Changes: %d\n",changes);
    printf("String: %s\n",string);
    printf("String Before: %s\n", startingString);
}
input:
20
10
teststring
goodbye

output:
20
0 <----
hello
goodbye

Ответы [ 2 ]

1 голос
/ 09 октября 2019

взятие двух последовательных scanf () - вот проблема. переменная переопределяется, когда видит

0 голосов
/ 09 октября 2019

Я не могу воспроизвести поведение программы для введенных вами данных.

Однако такой вызов scanf

scanf("%s", string);

небезопасен.

возможно, что когда вы вводите переменную string, вы перезаписываете переменную changes.

Используя такой вызов scanf

scanf("%s", string);

, вам нужно ввести меньше 10символов (или, как правило, меньше, чем sizeof (string)), потому что функция добавляет конечный ноль к введенной последовательности символов, сохраненной в аргументе.

...