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应该怎么写才能成功写入呢 看网上示例代码 好像就是如此写 貌似没有问题 可实际问题很大啊









