gpt4 book ai didi

c - 文件到字符和字符到数组 C

转载 作者:行者123 更新时间:2023-11-30 17:32:22 24 4
gpt4 key购买 nike

void calcula_estacionamento(){
FILE *f;
int n=0,i=0;
char linha[MAX],hora_i[2]="",min_i[2]="",hora_f[2]="",min_f[2]="";
f=fopen("parque.txt","r");
while(fgets(linha,MAX,f)!=NULL)
{
while(linha[n]!='h')
{
hora_i[i]=linha[n];
n++;
i++;
}
i=0;
n++;
while(linha[n]!=' ')
{
min_i[i]=linha[n];
n++;
i++;
}
i=0;
n++;
while(linha[n]!='h')
{
hora_f[i]=linha[n];
n++;
i++;
}
i=0;
n++;
while(linha[n]!='\0')
{
min_f[i]=linha[n];
n++;
i++;
}
printf("\n%s %s %s %s",hora_i,min_i,hora_f,min_f);
n=0;
i=0;
}

}

在我的文件“parque.txt”中,我有一行例如“9h00 12h30”我想访问该文件,逐行获取时间,这样我就可以减去并知道一个时间与另一个时间之间耗时。问题是,当我尝试将其从文件传递到临时字符串(在本例中:hora_i =“9”,min_i =“00”,hora_f =“10”,min_f =“30”)然后我打印它我得到的是:hora_i =“9”,min_i =“009”,hora_f =“10009”,min_f =“3010009”。有人可以向我解释为什么会发生这种情况吗?

最佳答案

您的程序失败的原因是您忘记将尾随 null 添加到字符串中。这就带来了字符串不够长的问题。由于您正在读取未知长度的数据,因此您也无法确保传入的字符串不会溢出目标数组。这些问题存在于你的每个循环中。修复它们将违反 DRY .

说真的,是时候回到起点了。编写一个函数来将字符串读取到分隔符,检查长度,然后多次调用该函数。这是帮助您入门的函数签名。

void read_token(char** source, char delimiter, char* destination, int maxlength);

请注意,源是一个指向指针的指针,因此您可以每次更新它。是的,还有其他方法,只需选择一种即可。

关于c - 文件到字符和字符到数组 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24225615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com