我正在编写一个程序,它接受用户输入一个人的详细信息,包括姓名、ID和电话号码.我将我的ID和电话号码分别限制为最多14个和13个字符(不包括换行符)-例如,ID为0
,电话号码为fgets
03-1234567010-1111-2222
.如果我理解正确的话,fgets
应该在从用户输入读入一个字符串后自动添加一个换行字节,fputs
应该在id
和phoneNum
中存储的字符串的末尾写入换行符,但是当try 输入比允许的字符更多的字符时,例如,010203-12345678
代表ID,下面的fputs
不会写出它应该写出的换行符.如何确保即使用户输入的字符超过允许的数量,换行符也会被fputs
写出?
以下是我的代码:
#include <stdio.h>
void FlushInputBuf(void)
{
while (getchar() != '\n');
}
int main(void)
{
FILE *fp = fopen("details.txt", "wt");
if (fp == NULL)
{
puts("File open failed.\n");
return -1;
}
char name[20];
char id[15];
char phoneNum[14];
printf("Enter name: ");
fgets(name, sizeof(name), stdin);
printf("Enter ID: ");
fgets(id, sizeof(id), stdin);
FlushInputBuf();
printf("Enter phone number: ");
fgets(phoneNum, sizeof(phoneNum), stdin);
fputs("#Name: ", fp);
fputs(name, fp);
fputs("#SSID: ", fp);
fputs(id, fp);
fputs("#Phone number: ", fp);
fputs(phoneNum, fp);
fclose(fp);
return 0;
}
我假设输入的名称不会超过20个.
当我输入ID为0details.txt03-1234567
,电话号码为010-1111-2222
时,我在details.txt中得到以下结果:
#Name: John
#SSID: 010203-1234567#Phone number: 010-1111-2222
如何让代码写到details.txt,如下所示:
#Name: John
#SSID: 010203-1234567
#Phone number: 010-1111-2222