大佬教程收集整理的这篇文章主要介绍了如何使用 fscanf 读取文件以初始化 C 中的值?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有如下所示的 ClIEnt.txt 文件。 Client.txt file picture
1111
name One
Email.email.1
111-111-1111
2222
name Two Two
Email.email.2
222-222-2222
3333
name Three Three
Email.email.3
333-333-3333
客户端 txt 文件包含 客户的 ID、姓名、电子邮件和电话号码。
现在的任务是从 ClIEnt 文件中读取并将 ID、姓名、电子邮件和电话号码保存到一个名为 ClIEnt 的结构体中。 从这个客户端文本文件中,我将创建三个结构值,这些值将被推送到结构列表中。
但由于我只是在学习如何使用 fscanf,并且在尝试练习 fscanf 时,我将任务范围缩小为: 如何从文本中读取并初始化第一个客户端的值?
这是我尝试的。
int main(voID){
file *fPtr;
if((fPtr = fopen("ClIEnt.txt"),"r") == NulL){
puts("file Could not be found.");
}
else{
//First ClIEnt
int clIEntID;//1111
char clIEntname[30];//name One
char clIEntEmail[30];//Email.email.1
char clIEntPhone[30];//111-111-1111
//Initialize the first clIEnt.
fscanf(fPtr,"%d%s%s%s",&clIEntID,clIEntname,clIEntEmail,clIEntPhone);
//While not end of the file,initialize rest of the clIEnts.
while(!feof(fPtr)){
//Have not yet implemented.
}
fclose(fPtr);
}
}
如何将第一个客户端值初始化为
clIEntID = 1111
clIEntname[30] = name One
clIEntEmail[30] = Email.email.1
clIEntPhone[30] = 111-111-1111
这是一个解决方案,不使用 scanf
而是使用 getline
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
typedef struct Client_s
{
int clientId;
char clientName[30];
char clientEmail[30];
char clientPhone[30];
} Client;
Client* get_next_client(FILE *f_ptr)
{
Client *new_client = malloc(sizeof(Client));
char *buff = malloc(30);
size_t size = 30;
int error = 0;
if (new_client == NULL || buff == NULL)
return NULL;
if (getline(&buff,&size,f_ptr) <= 0)
return NULL;
new_client->clientId = atoi(buff);
if (getline(&buff,f_ptr) <= 0)
return NULL;
strncpy(new_client->clientName,buff,strlen(buff) - 1);
if (getline(&buff,f_ptr) <= 0)
return NULL;
strncpy(new_client->clientEmail,f_ptr) <= 0)
return NULL;
strncpy(new_client->clientPhone,strlen(buff) - 1);
free(buff);
return new_client;
}
int main(int ac,char **av)
{
FILE * f_ptr = fopen("Client.txt","r");
if (f_ptr == NULL)
{
write(2,"Could not open file\n",strlen("Could not open file\n"));
return 1;
}
Client *client = get_next_client(f_ptr);
while (client != NULL)
{
printf("%d\n",client->clientId);
//handle client
client = get_next_client(f_ptr);
}
fclose(f_ptr);
return 0;
}
当您不再需要收到的客户端时,不要忘记释放它们。
希望能解决您的问题。
以上是大佬教程为你收集整理的如何使用 fscanf 读取文件以初始化 C 中的值?全部内容,希望文章能够帮你解决如何使用 fscanf 读取文件以初始化 C 中的值?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。