如何避免阅读分号;在FILE中并将它们保存在变量?
中#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
char gstitem[6], gstname[30],;
int gstquant, itemquant;
float gstprice;
char string[10];
printf("Purchase items fuction\n\n");
FILE *gstPtr; //pointer to the gst.txt
gstPtr = fopen ( "gst.txt", "r+" );
printf("Enter an item code: ");
fgets(string,10,stdin);
(!feof(gstPtr));
{
fscanf(gstPtr,"%[^;]s %[^;]s %[^;]f %[^;]d\n",gstitem,gstname,&gstprice,&gstquant);
printf("%s %s %f %s\n",gstitem,gstname,gstprice,gstquant);
}
fclose(gstPtr);
}
这是我想要fscanf vv的文件
答案 0 :(得分:3)
格式字符串的问题:
使用%[^;]
格式说明符时,不应向其添加s
。暗示预期的数据是字符串。
使用%[^;]
而不指定宽度可能会导致读取的数据超出变量可容纳的数据量。始终指定您希望阅读的最大字符数。
使用%[^;]d
和%[^;]f
不允许您阅读int
和float
。
避免在格式字符串中使用\n
。这将导致fscanf
读取并丢弃所有字符,直到下一个非空白字符。它不会只读取换行符。最好添加另一行来跳过所有内容,直到并包括换行符。
使用:
fscanf(gstPtr,"%5[^;];%29[^;];%f;%d",gstitem, gstname, &gstprice, &gstquant);
int c;
while ( (c = fgetc(gstPtr)) != EOF && c != '\n');