关于C的文件流操作有关问题
关于C的文件流操作问题
今天写程序的时候发现了一个很奇怪的问题,在这里提出来,希望有人能解答一下
如果不加上fseek(file, sizeof(st), 0);,那么输出结果是flaf3,但是如果加上以后,字符串就输不出来了,谁能说一下为什么?
------解决方案--------------------
无fopen(...,"...b")不用fseek!
------解决方案--------------------
你不fseek的话,那么file指针可能指向的是0,这样取出的字符串相当于是空串。
今天写程序的时候发现了一个很奇怪的问题,在这里提出来,希望有人能解答一下
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <iomanip>
using namespace std;
char ch[250];
struct s{
short a, b;
};
int main(){
FILE *file = fopen("test.txt", "wt+");
s st;
st.a = 1, st.b = 2;
fseek(file, 0, 0);
fwrite(&st, sizeof(short), sizeof(st) / sizeof(short), file);
fseek(file, 0, 0);
fread(&st, sizeof(short), sizeof(st)/sizeof(short), file);
char temp[256] = "flaf";
int c = 3;
//fseek(file, sizeof(st), 0); 加上这一句结果就不一样了
fprintf(file, "%-0200s", temp);
fwrite(&c, sizeof(int), 1, file);
//fputs(temp, file);
fseek(file, sizeof(st), 0);
fgets(temp, sizeof(temp), file);
fread(&c, sizeof(int), 1, file);
cout << temp << c<<endl;
fclose(file);
system("pause");
return 0;
}
如果不加上fseek(file, sizeof(st), 0);,那么输出结果是flaf3,但是如果加上以后,字符串就输不出来了,谁能说一下为什么?
------解决方案--------------------
无fopen(...,"...b")不用fseek!
------解决方案--------------------
你不fseek的话,那么file指针可能指向的是0,这样取出的字符串相当于是空串。