文件到字符和字符到数组C
} 在我的文件parque.txt中,我有一行代码,例如9h00 12h30文件到字符和字符到数组C,c,C,} 在我的文件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。有人能解释一下为什么会发生这种情况吗?您的程序失败的原因是您忘记了在字符串中添加
我想访问那个文件,一行一行地获取时间,这样我就可以减去并知道一次和另一次之间经过的时间。问题是,当我尝试将它从文件传递到临时字符串时,在这种情况下: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。这就产生了字符串不够长的问题。由于正在读取长度未知的数据,因此也无法确保传入字符串不会溢出目标数组。这些问题存在于每个循环中。修复它们将违反法律 说真的,是时候回到起点了。编写一个函数将字符串读入分隔符,对照长度进行检查,并多次调用该函数。这是函数签名,让您开始
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;
}
请注意,源是指向指针的指针,因此您可以每次更新它。是的,还有其他方法,只需选择一种并执行即可。是的,这很有效,我从来没有想到用c来结束字符串,谢谢!
void read_token(char** source, char delimiter, char* destination, int maxlength);