Действительно запутался, если моя программа ведет себя так, как должна. это не домашнее задание, просто программа предсказания безумия безумства, которую я пишу.Это переполнение буфера?
char buffer[20];
char team1_name[20]; // 18 chars + new line + null
char team2_name[20];
printf("Who is team 1?\n");
fgets(buffer, sizeof(buffer), stdin);
strncpy(team1_name, buffer, sizeof(team1_name));
team1_name[strlen(team1_name) - 1] = '\0';
printf("\nWho is team 2?\n");
fgets(buffer, sizeof(buffer), stdin);
strncpy(team2_name, buffer, sizeof(team2_name));
team2_name[strlen(team2_name) - 1] = '\0';
printf("\nEnter %s's info:\n", team1_name);
Из любопытства Я ввожу название команды более 20 символов, и оно полностью пропускает второй оператор печати. я защищаю от переполнения буфера? это до пользователя, чтобы не вкладывать в что-то огромное? Мне нужны флеш-заявления?
Это выход:
Who is team 1?
wjefowiejfwoiejfweoifjweoifjweofijweoifj
Who is team 2?
Enter wjefowiejfwoiejfwe's info:
Wins in last 12:
Losses in last 12:
Points per game:
В ваших линиях 'fgets' отображается только столько символов, сколько вы им указываете. Если пользователь вводит более того, они остаются для следующих 'fgets'. –
@DavidSchwartz, так что я ничего не могу об этом ?? – Tim
@Tim: просто продолжайте читать, пока не получите новую строку, а затем задайте свой следующий вопрос. Это не ракетостроение, это базовая обработка ввода. – tbert