求解释 乱码有关问题
求解释 乱码问题
程序:
FILE *fp = fopen("a.txt","w");
FILE *fp1 = fopen("b.txt","w");
char name[10],password[6];
int j=0;
int ch=0;
srand(time(NULL));
for (int i = 0;i < 9;i++)
{
name[i] = rand()%9;
}
printf("\n你的账号为:\n");
for (int i = 0;i < 9;i++)
{
printf("%d",name[i]);
}
printf("\n输入密码:\n");
for (j = 0;j < 6;j++)
{
do
{
ch = getch();
} while (!(isdigit(ch)));
printf("*");
password[j] = ch;
}
fprintf(fp,"%s",name);
fprintf(fp1,"%s",password);
fflush(stdin);
printf("\n账号注册成功!\n");
fclose(fp);
fclose(fp1);
return 0;
在文件中出现 121212烫烫烫烫烫 这样的乱码??怎么解释???
------解决方案--------------------
6位密码的话
password[6];
改为
password[6 + 1];
------解决方案--------------------
字符串结尾缺少结束符'\0'。定义空间时要预留一个结束符的大小
------解决方案--------------------
char name[10] = {0},password[7] = {0}; // 要初始化,长度要预留结束符
注释掉这句 password[j] = ch;
------解决方案--------------------
看错了,不能注掉这句 password[j] = ch;
------解决方案--------------------
我感觉是类型转换出错了
------解决方案--------------------
password初始化做了如下更改:
代码其他地方不变。
------解决方案--------------------
这样可以用
------解决方案--------------------
程序:
FILE *fp = fopen("a.txt","w");
FILE *fp1 = fopen("b.txt","w");
char name[10],password[6];
int j=0;
int ch=0;
srand(time(NULL));
for (int i = 0;i < 9;i++)
{
name[i] = rand()%9;
}
printf("\n你的账号为:\n");
for (int i = 0;i < 9;i++)
{
printf("%d",name[i]);
}
printf("\n输入密码:\n");
for (j = 0;j < 6;j++)
{
do
{
ch = getch();
} while (!(isdigit(ch)));
printf("*");
password[j] = ch;
}
fprintf(fp,"%s",name);
fprintf(fp1,"%s",password);
fflush(stdin);
printf("\n账号注册成功!\n");
fclose(fp);
fclose(fp1);
return 0;
在文件中出现 121212烫烫烫烫烫 这样的乱码??怎么解释???
------解决方案--------------------
6位密码的话
password[6];
改为
password[6 + 1];
------解决方案--------------------
字符串结尾缺少结束符'\0'。定义空间时要预留一个结束符的大小
------解决方案--------------------
char name[10] = {0},password[7] = {0}; // 要初始化,长度要预留结束符
注释掉这句 password[j] = ch;
------解决方案--------------------
看错了,不能注掉这句 password[j] = ch;
------解决方案--------------------
我感觉是类型转换出错了
------解决方案--------------------
password初始化做了如下更改:
password[6+1] = {0};
代码其他地方不变。
------解决方案--------------------
这样可以用
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string>
FILE *fp = fopen("a.txt","w");
FILE *fp1 = fopen("b.txt","w");
int main()
{
char name[10],password[7],pname[10];
int j=0;
int ch=0;
srand(time(NULL));
for (int i = 0;i < 9;i++)
{
name[i] =rand()%9+'0';
}
name[9]='\0';
printf("\n你的账号为:\n");
for (int i = 0;i < 9;i++)
{
pname[i]=name[i]-'0';
printf("%d",pname[i]);
}
printf("\n输入密码:\n");
for (j = 0;j < 6;j++)
{
do
{
ch = getchar();
} while (!(isdigit(ch)));
printf("*");
password[j] = ch;
}
password[6]='\0';
fprintf(fp,"%s",name);
fprintf(fp1,"%s",password);
fflush(stdin);
printf("\n账号注册成功!\n");
fclose(fp);
fclose(fp1);
return 0;
}
------解决方案--------------------