Итак, я знаю, что этот вопрос задан раньше, но я не могу заставить ничего работать. То, что я сейчас не в этом:Сканирование пробела/всей строки в c
#include<stdio.h>
struct ClothingCustomer{
char name[20];
int age;
double inseam;
};
struct ClothingCustomer createACustomer(){
struct ClothingCustomer aCustomer;
printf("Enter Customer Name: ");
scanf("%s",aCustomer.name);
printf("Age: ");
scanf("%d",&aCustomer.age);
printf("Inseam: ");
scanf("%lf",&aCustomer.inseam);
return aCustomer;
};
int main(){
FILE* customersFile = fopen("customers.txt","w");
for (int i = 0; i < 5; i++){
struct ClothingCustomer aCustomer = createACustomer();
fprintf(customersFile, "%s %d %lf\n", aCustomer.name, aCustomer.age, aCustomer.inseam);
}
fclose(customersFile);
return 0;
}
Независимо от того, что я делаю, чтобы попытаться сделать это отсканировать более одного слова, как имя/фамилия или что-то, он работает, но вот что я получаю в консоль во время работы этого (с параметрами сканирования, чтобы попытаться пройти белого пространства, перечисленных ниже, приведенный выше код работает правильно, но не допускает пустое пространство):
Enter Customer Name:
Age:
Inseam:
Enter Customer Name: Age:
Inseam: Enter Customer Name: Age:
Inseam:
Enter Customer Name: Age:
Inseam:
Enter Customer Name: Age:
Inseam:
Как я могу сделать это не делать этого ? Я попытался использовать:
[^\n]
fgets(name, sizeof(name), stdin);
и то же самое происходит каждый раз.
Где пользователь вводит ваш пример взаимодействия? Вы вообще что-то вводите? – DyZ
Вам нужно использовать новую строку после 'scanf ("% lf ", & acustomer.inseam);'. – BLUEPIXY
Всегда ошибка: не проверяйте возвращаемое значение из scanf() и fopen(). – Jens