【发布时间】:2024-01-07 03:19:01
【问题描述】:
我有一些关于人的信息的 .txt 文件。我需要使用以下格式打印此信息。我是编程新手,所以我真的不知道如何正确使用 fscanf()。我还必须检查每个项目是否正确。例如 name 只能是 char[40] 类型,number 必须是能被 11 整除的整数,等等。如果输入不正确,程序将打印消息:“Incorrect input: number\n”。你能帮我解决这个问题吗? 文件:
James Novak
6608133268
D99
20190204
Mary Novak
0256157704
B24
20190112
预期输出:
Name: James Novak
Number: 9206110980
Diagnosis: D99
Date: 20190204
Name: Mary Novak
Number: 7256235756
Diagnosis: B24
Date: 20190112
到目前为止,我只设法打印了文件。
#include <stdio.h>
int main()
{
FILE *f;
char s[50];
f=fopen("patients.txt","r");
if (!f)
return 1;
while (fgets(s,50,f)!=NULL)
printf("%s",s);
fclose(f);
return 0;
}
我正在考虑使用循环来检查输入,但我还不知道该怎么做。
【问题讨论】:
-
您是否编写了代码来读取文件并逐行显示其内容,而没有预期的格式?
-
fscanf()不擅长处理格式错误的输入。您应该通过fgets()读取输入并自行解析。检查输入格式是否正确后,sscanf()可能有助于将字符串转换为整数。 -
请展示您尝试过的内容;期望有努力的证据,而不是期望 SO 只是为您编写代码。
-
"如何使用 .txt 文件中的 fscanf 打印并检查输入是否正确?"不是。您阅读整行并明确解析它们以确保正确性。
scanf()和家人是为了正确输入。见sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html -
欢迎来到 Stack Overflow。这是一个新程序员提出的一个好问题。但是,不幸的是,答案打开了一大堆蠕虫。你知道微软需要发布安全补丁的所有麻烦吗?其中很大一部分是因为他们的许多遗留系统代码使用 C 语言文本字符串处理,其中缓冲区溢出很容易。