2017-01-27 2 views
-1

Я работаю с файлами и пытаюсь создать их с текстовым вводом пользователя, но некоторые из них должны допускать разные слова с пробелами между ними. Я искал решения здесь, я полагаю, лучший вариант - использовать fgets, но он работает только для ввода текста while Тема ввода печатает только текст в файле после двух слов, я хотел бы знать как напечатать в файле весь предмет ввода.Создание файла с пользователем ввода, используя строки с пробелами (C)

СПАСИБО !!

#include <stdlib.h> 
#include <stdio.h> 

int main() 
{ 
    int id=0; 
    char to[20], from[20], date[10], subject[40], text[1000]; 
    FILE *fp; 

    fp = fopen("outbox/email.txt","w"); 

    printf("\nTo: "); 
    scanf("%s",&to); 
    printf("\nFrom: "); 
    scanf("%s", &from); 
    printf("\nID: %d\n", id); 
    printf("\nDate: "); 
    scanf("%s", &date); 
    printf("\nSubject: "); 
    scanf("%s",&subject); 
    printf("\nText: "); 
    scanf("%s",&text); 

    fprintf(fp,"To: %s  ",to); 
    fprintf(fp, "From: %s  ", from); 
    fprintf(fp, "ID: %d  ", id); 
    fprintf(fp, "Date: %s  ", date); 
    fgets(subject,40,stdin); 
    fprintf(fp, "Subject: %s  ", subject); 
    fgets(text,1000,stdin); 
    fprintf(fp, "Text: %s  ", text); 

    fclose(fp); 

return 0; 
} 

ответ

0

scanf("%s", str) читает только одно слово. fgets(str, sizeof str, stdin) читает целую строку. Мне кажется, что вы хотите прочитать целую строку для каждого элемента заголовка, так как все они обычно состоят из нескольких слов. Поэтому используйте fgets() всюду.

Также размеры, которые вы используете для строк, довольно малы. Например, нет адреса электронной почты длиной более 19 символов.

Смежные вопросы