Эта программа должна получить пользовательскую строку ввода слов, сохранить их в структуре данных и затем распечатать все в файл.Например, если я наберу «test one», он должен быть сохранен на input.one, а затем я должен увидеть «test one» на clients.txt.Если я наберу «проверить один», «проверить два» и «проверить три», я должен увидеть эти три ввода, напечатанные на клиентском.txt.
Проблема в том, что программа сейчас будет выполнять только один scanf вместотри, вот почему я добавил три scanf вместо того, чтобы делать только один scanf.По сути, если я введу «проверить один», он сохранит и напечатает только один тест, не запрашивая другие два ввода, я понятия не имею, почему.
Дополнительно: я добавил эти fgets как еще один способ попытатьсясохраните входные данные правильно, проблема в том, что fgets напечатает данные в файле как
"проверить один тест два проверить три"
вместо всего в одной строке, поэтому fgets не будетне работает ни.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct inputs {
char one[30];
char two[30];
char three[30];
};
int main(void)
{
struct inputs inputs = {"", "", ""};
FILE *cfPtr; // cfPtr = clients.txt file pointer
// fopen opens file. Exit program if unable to create file
if ((cfPtr = fopen("clients.txt", "w")) == NULL) {
puts("File could not be opened");
}
else {
puts("Enter one, two, three.");
puts("Enter EOF to end input.");
printf("%s", "? ");
//scanf("%[^\n]s%[^\n]s%[^\n]s", inputs.via, inputs.nome, inputs.stars);
/*
fgets(inputs.one, 30, stdin);
fgets(inputs.two, 30, stdin);
fgets(inputs.three, 30, stdin);
*/
while (!feof(stdin)) {
scanf("%[^\n]s", inputs.one);
scanf("%[^\n]s", inputs.two);
scanf("%[^\n]s", inputs.three);
fprintf(cfPtr, "%s%s%s", inputs.one, inputs.two, inputs.three);
}
fclose(cfPtr); // fclose closes file
}
}