void readyonghu() {
int j = 0;
char money[20]={0};
if (fy == NULL) // 打开文件并且让fy指向 文件
{
HWND hnd = GetHWnd();
MessageBox(hnd, "读取用户信息失败!", "提示", MB_OKCANCEL);
exit(1);
}
while (!feof(fy)) //读取一组数据后指针指向下一组数据,并且判断是否指向最后一行
{
fscanf_s(fy, "%s%s%s%s\n", y[j].name, 20, y[j].id, 20, y[j].password, 20, money, 20 );
y[j].money=atoi(money);//字符串转换为整数
j++;
yonghu_num = j;//更新用户数量
}
fclose(fy); //关闭文件;
}
转换数据有问题, money 是字符数组,要转成 int 型不行,
你moeny 直接用 %d 接收,定义 int money
前两天我也遇到这个问题,大佬跟我讲不要用这个,在文件#include前加#define _CRT_SECURE_NO_DEPRECATE,挺好用的
fscanf 里 加几个空格 "%s %s %s %s\n"
你查查 VS禁用 SDL
不知道你这个问题是否已经解决, 如果还没有解决的话:这里就将fprintf写入文件的格式化数据读出,然后利用printf函数打印到屏幕
//随便定义一个结构体类型
struct S
{
int n;
float f;
char arr[5];
};
//格式化的输入
int main()
{
struct S s={0};//创建一个结构体变量来存储fscanf读取的格式化数据
FILE *pfread= fopen("test.txt","r");//以读的形式打开一个文本文件
if ( pfread == NULL)
{
printf("%s",strerror(errno));
}
fscanf(pfread, "%d %f %s ",&(s.n),& (s.f), s.arr);//选择那个流读数据 将数据格式化输入
printf("%d %0.2f %s ",s.n, s.f, s.arr);
fclose(pfread); //关闭文件
pfread=NULL;//防止变成野指针
return 0;
}
读取结果
用fscanf从键盘读一个字符串,用fprintf输出到屏幕
//从键盘读,从屏幕输出
int main()
{
char str[10]={0};
fscanf(stdin,"%s",str);
fprintf(stdout,"%s ",str);
return 0;
}
以二进制方式读写二进制文件