C语言写文件的时候出现乱码“烫烫烫烫烫烫烫烫”是怎么回事

代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include<Windows.h>

struct Res
{
char name[15];
char sex[4];
char tel[20];
char address[15];
char userid[19];
char cardId[20];
char pwd[6];
double salary;
};

void CreateCardId(char* myId)
{
srand(time(NULL));
int n = rand()%10;
char* ID = "12345678";
myId = (char*)malloc(50*sizeof(char));
memset(myId, 0, 50);
char* random = (char*)malloc(16*sizeof(char));
strcpy(myId, ID);
int i = 0;
for(i = 0; i<8; ++i)
{
memset(random,0,16);
int n = rand()%10;
itoa(n, random,10);
strcat(myId,random);
}
printf("给您分配的银行卡号为:");
puts(myId);
}

void InsertUser( FILE* file )
{
struct Res User;
char* usepwd = (char*)malloc(6*sizeof(char));
memset(usepwd, 0 ,6);
puts("请输入名字");
gets(User.name);
puts("请输入性别");
gets(User.sex);
puts("请输入电话");
gets(User.tel);
puts("请输入身份证号");
gets(User.userid);
CreateCardId(User.cardId);
fprintf( file,"name=%s\nsex=%s\ntel=%s\nuserId=%s\ncarId=%s\n",User.name, User.sex, User.tel, User.userid, User.cardId);

}

int main()
{
int i = 0;

FILE* file = fopen("d:\\bank.ini","w");
if( NULL == file )
{
puts("文件打开失败");
return -1;
}
puts("请输入你需要的服务");
puts("1.开户");
puts("2.查询余额");
puts("3.存款");
puts("4.取款");
puts("5.转账");
puts("6.销户");
puts("7.退出");
scanf("%d", &i);
fflush(stdin);
system("cls");
switch(i)
{
case 1:
InsertUser( file );
}

fclose(file);
file = NULL;

}

这是你定义的字符串没有初始化为0,当输出的时候编译器找到不到字符串结束符。就会出现这样的乱码。你可以将你的结构体中定义的字符数组都初始化为0.或者直接用memset()把结构体定义的变量初始化为0试一下。你的程序没有具体看,不过应该就是这个问题吧~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-14
在结尾处缺少一个空字符('\0'), 所以它不是一个串,这样, puts() 就不知道什么时候停止输出, 它将会把 a后面内存单元中的内容都打印出, 直到它在什么地方碰到了一个空字符为止。
第2个回答  2014-10-18
在代码段插入“烫”,就会出现异常“0x8000003”,INT3断点。
第3个回答  2013-01-14
没有给字符加结束标识'\0'
第4个回答  2013-04-27
辣椒吃多了 结果 突然 喝了一口热汤 就这么喊了
相似回答