renkejun版主呢 进来瞧瞧
程序代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct song_info { int songnum; char songname[15]; }SINFO,*pso; void add(SINFO* pso,FILE* fp,int num) { for(int i=0;i<num;i++) { printf("这是要添加的第%d首歌的信息: \n",i+1); printf("歌曲编号是:"); scanf("%d",&pso[i].songnum); fflush(stdin); printf("歌曲名字是:"); gets(pso[i].songname); fflush(stdin); fprintf(fp,"%6d%16s\n",pso[i].songnum,pso[i].songname); //fwrite(&pso[i],sizeof(SINFO),1,fp); //用上句sprintf能够成功写入 //而使用fwrite则无法成功写入 //表现1、int类型未能转化成字符 // 2、结尾没有换行回车符 } fclose(fp); printf("歌曲添加成功!\n"); } int main(void) { FILE* fp; int num=0; fp=fopen("song.txt","a+"); printf("请输入你要添加歌曲的数量:"); scanf("%d",&num); fflush(stdin); SINFO* pso; pso=(SINFO*)malloc(sizeof(SINFO)*num); memset(pso,0,sizeof(SINFO)*num); add(pso,fp,num); return 0; }这是下面有一个网友提出来的问题 我把问题简化了
现在的问题是 fwrite应该怎么写才能成功写入呢 看网上示例代码 好像就是如此写 貌似没有问题 可实际问题很大啊