【发布时间】:2012-01-22 18:50:53
【问题描述】:
我正在使用 fprintf 函数打印到新文件
我用下面的命令写了多次:
fprintf(fp, "%-25s %d %.2f %d",temp->data.name, temp->data.day, temp->data.temp, temp->data.speed);
问题是有时文件的第一个字符会多出一个新行。 这可能是一些缓冲区的遗留物吗,我真的不知道......
typedef struct Data {
char name[26];
int day;
int speed;
float temp;
} Data ;
@spatz 你是对的,我对字符串格式有点陌生,我被告知要为 fscanf 制作一个,我预计数据位之间的空间量不确定,这就是我想出了,我很确定它是问题的根源:
check=fscanf(fp1, "%20c%*[^0-9]%d%*[^0-9]%f%*[^0-9]%d%*[^\n]%*c", name, &day, &temp, &speed);
只有第一行被正常读取,之后的所有内容都读取上一行的新行。
有人可以告诉我写这个东西的正确方法吗?
【问题讨论】:
-
显示
temp->data类型的定义。您是否在编译时出现所有警告? -
fp是怎么打开的?难道仅仅是name以换行符开头? -
请发布完整代码,否则所有解决您问题的尝试都将纯属猜测。 IE。您如何打开文件,该文件之前是否存在,是否在另一个程序中打开,您的
data结构中的实际数据是什么?