我正在使用文件并尝试使用用户的文本输入创建文件,但有些输入必须允许不同的单词之间有空格。我一直在寻找解决方案,我想最好的选择是使用 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;
}
答案 0 :(得分:0)
scanf("%s", str)
只读一个字。 fgets(str, sizeof str, stdin)
读了一整行。在我看来,你想要读取每个标题项的整行,因为它们通常都是由多个单词组成的。所以到处使用fgets()
。
此外,您用于字符串的尺寸非常小。例如,拥有超过19个字符的电子邮件地址很容易。