使用输入用户创建文件,使用带空格的字符串(C)

时间:2017-01-27 10:52:35

标签: c

我正在使用文件并尝试使用用户的文本输入创建文件,但有些输入必须允许不同的单词之间有空格。我一直在寻找解决方案,我想最好的选择是使用 fgets ,但它仅适用于文本输入,而主题输入只在两个单词后打印文件中的文字,我想知道如何在文件中打印整个主题输入。

谢谢!

#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;
}

1 个答案:

答案 0 :(得分:0)

scanf("%s", str)只读一个字。 fgets(str, sizeof str, stdin)读了一整行。在我看来,你想要读取每个标题项的整行,因为它们通常都是由多个单词组成的。所以到处使用fgets()

此外,您用于字符串的尺寸非常小。例如,拥有超过19个字符的电子邮件地址很容易。