#c #arrays
#c #массивы
Вопрос:
Я хочу отобразить полное имя, но я не могу ввести более двух частей имени. Программа застряла при вводе имени, которое содержит больше символов, чем число, которое имеет массив. Как я могу это решить?
#include <stdio.h>
#include<stdlib.h>
int main(){
char x[25];
printf("Enter your name");
scanf("%s",x);
printf("Your name is %s", x);
return 0;
}
Спасибо
Комментарии:
1.
scanf("$[^n]", x);
2. Это одна из нескольких причин, по которым рекомендуется использовать
fgets
вместоscanf
.3. Пожалуйста, правильно отформатируйте / сделайте отступ в вашей программе.
4. @BLUEPIXY это работает! Спасибо
Ответ №1:
Я думаю, это может вам помочь. Этой программе все равно, сколько символов, пробелов вы ввели. Он отображает только первые 24 символа и пробелы. (1 для завершения строки)
#include <stdio.h>
#include <stdlib.h>
int main(){
char x[25];
char *xx=x;
puts("Input Name");
fgets(xx,25,stdin);
puts(xx);
return 0;
}
Комментарии:
1. Для чего
xx
нужна переменная? Вы можете использоватьx
напрямую.2. Спасибо! что такое строковый терминатор?
3. строковый терминатор хранится в виде массива, он не может быть напечатан
4. @user7030669 — По определению строка C представляет собой массив ‘char’, всегда заканчивающийся нулевым терминатором в форме ‘ 0’ или ‘0’. Вот почему, если вам нужно отобразить строку с 25 символами, в массиве строк должно быть место для 26.