застрял с пробелами и массивами

#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.