gpt4 book ai didi

C - fscanf 扫描集在换行后不工作

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:02 25 4
gpt4 key购买 nike

int i = 0;
while (fscanf(fi, "%[^,],%[^,],%[^,],%[^,],%[^\n]\n", buf.first,
buf.second,
buf.third,
buf.fourth,
buf.fifth) == 5)
{
if (i == 0)
{
ptr->pid = atol(buf.first);
ptr->name = buf.second;
ptr->ram = atoi(buf.third);
ptr->size = atof(buf.fourth);
ptr->os = buf.fifth;
}
i++;
}
printf("%li %s %d %.2f %s\n", ptr->pid, ptr->name, ptr->ram, ptr->size, ptr->os);//test

捕获 2:
Capture 2
捕获3:
Capture 3

反正扫描有问题,我用\n替换了输入文件\r\n-s,但它仍然扫描了错误的项目。当我在输入文件的每一行末尾添加 coma-s 并在扫描中将“\n”替换为“,\n”时,它会正确显示第一个元素,但不会扫描其他元素。

谁解决了问题,谁就应该得到一 block cookies 。

最佳答案

No 扫描没有问题。问题在于您使用 char * 的 in 循环的方式。

ptr->pid = atol(buf.first);
ptr->name = buf.second; // <-------1
ptr->ram = atoi(buf.third);
ptr->size = atof(buf.fourth);
ptr->os = buf.fifth; // <-------2

在您的输出中,您看到整数或 float 没有改变并且与第一个条目相同但字符串被改变(输出为最后一个值读取)

因为当您指向指针而不是复制时,如注释 1 和 2 中所示。因此,随着它指向的值发生变化,输出也会发生变化

因此使用strcpy 来复制字符串而不是指向它们。

关于C - fscanf 扫描集在换行后不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43427435/

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