gpt4 book ai didi

c - fscanf 跳过我的第一个字符

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:28 24 4
gpt4 key购买 nike

目前我正在做我的 C 编程作业。我面临一个问题,我需要使用 fprintf 将一些记录添加到文本文件,然后使用 fscanf 显示文件中的所有记录。但是这里的显示问题。它只跳过文本中的第一个字符,并显示其余部分。文本文件中的示例,

hello haha 400 500 60
hello2 haha2 500 600 70

我们需要 fscanf 这个文件以显示在命令提示符中。但结果告诉我...

ello haha 400 500 60
hello2 haha2 500 600 70

其余字符没问题,但对于第一个字符,它跳过了。所以这是我的代码。

Fscanf 的部分

if ((ch = fgetc(fp)) != EOF){
while(fscanf(fp,"%s %s %d %d %d",code,name,&cost,&price,&stock) == 5)
{
printf("%-20s %-20s %-20d %-20d %-20d\n",code,name,cost,price,stock);
}
}else{
printf("Record not found in the stock database.\n");
puts("");
}

Fprintf 的部分

fprintf(fp,"%s %s %d %d %d\n",code,name,cost,price,stock);

那么,如何读取第一个字符?

最佳答案

你的 fgetc(fp) 读取了第一个 hello 的第一个 h,所以现在文件指针位于 hello 的 e。您的 fscanf 的进一步调用将从 e 开始读取。一个简单的解决方案是在 if 条件的 while 循环上方添加一个 printf("%c", ch) 。即,

if ((ch = fgetc(fp)) != EOF){
printf("%c", ch);
while(fscanf(fp,"%s %s %d %d %d",code,name,&cost,&price,&stock) == 5)
{
printf("%-20s %-20s %-20d %-20d %-20d\n",code,name,cost,price,stock);
}
}else{
printf("Record not found in the stock database.\n");
puts("");
}

关于c - fscanf 跳过我的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23956508/

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