① 用c语言编写文件为什么文件里是乱码
第一个程序:
1. 你是想输入26个字母吧,那缓冲区长度不够,结尾要预留一个'\0'字符,char str[26] 至少要改成 char str[27]
2. 将字符输入文件时,不要写最后一个字符'\0', fwrite(str,1,27,fp) 改为 fwrite(str,1,26,fp); 原因是,文本文件当中是无须'\0'的,可能会导致乱码
3 字符读出来了之后,也要加上 str[26] = '\0' 语句
第二个程序:
1. 缓冲区不够, char str[26], 改为 char str[27]
2. 读取文件函数写错鸟,fwrite 改为 fread; 不要搞 fputs 了,文件是以"r"只读模式打开的
3 假使你把字符读出来了,也要加上 str[26] = '\0' 语句
#include<stdio.h>
#include<stdlib.h>
int main()
{
char str[100];
FILE *fp;
if((fp=fopen("字符串.dat","w"))==NULL)
{
printf("can't find the file!\n");exit(0);
}
gets(str);
fwrite(str,1,26,fp);
fclose(fp);
if((fp=fopen("字符串.dat","r"))==NULL)
{
printf("can't find the file!\n");exit(0);
}
fread(str,1,26,fp);
str[26] = '\0';
printf("%s\n",str);
fclose(fp);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
char str[100];
if((fp=fopen("字符串.dat","r"))==NULL)
{
printf("can't find the file!\n");exit(0);
}
fread(str,1,26,fp);
str[26]='\0';
printf("%s\n",str);
fclose(fp);
return 0;
}
② C语言读取文件出现错误,读取了两遍而且有乱码是什么情况
程序执行两边,肯定是代码问题。
数据对计算机而言就是2进制,你看乱码说明显示的时候没有对应字符集,你把原文件打开看有乱码没。
或者你文件有中文,你试试用全部英文和数字的文件读取。
另外,文件有格式的话,你换fscanf和fprintf看看。
③ c语言运行结果乱码怎么解决
发你的代码看看
max与min没有初始稿咐拦化
还有就是简薯for语句后多了一个分号
修改后的代码键胡如下:
#include<stdio.h>
main()
{
int max,min,n,m,i;
printf("输入n:");
scanf("%d",&n);
for(i=1; i<=n; i++)
{
printf("输入第%d个数:", i);
scanf("%d", &m);
if (i==1)
{
max=min=m;
}
else if(m>max)
{
max=m;
}
else if(m<min)
{
min=m;
}
}
printf("max=%d\nmin=%d",max,min);
}
④ 我的C语言程序运行后为什么是乱码
有几个小问题:
第一:c语言一般不支持中文薯肢,如果你用vc6.0++就是无法打印中文,一定会乱码,建议用英文;
第二:如果你用的c语言编译器支持中文,如devc++,则可以使用中文;
第三:我们的使用的字符格式,最多的是UTF-8,把默认消键代码页格式改为UTF-8试试吧
希望我的分享对你有用,拿手巧感谢采纳
⑤ c语言打印字符串乱码,应该怎么办
1、字符串数组各字符单搏团个赋值的话,在每串最后一个字符之后添加 '\0',表示串结束了,输入时就没有多余的乱码了,因为gets()或scanf() 的%s都是主动在串结束后添加了 '\0'的。x0dx0a2、字符串使用前请使用清空语句把垃圾内存清理成'\0',也就是0x00(0):x0dx0amemset(str2, 0x00, sizeof(str2));x0dx0a当然,也可以在声明的时候进行初始化:x0dx0achar str2[20] = {0};x0dx0a这句也能实现同样的效果。这是C语言习惯,则伏务必养基盯橘成!x0dx0a'\0'是字符串结束符,每当解释器看到这'\0'才会认为字符串终止,而程序明显没有字符串结束符,所以连同垃圾内存一起读出来了
⑥ C语言出现乱码
有两个问题:
一、变量a是float型,用%d输入输出会出错,可以考虑把变量d定义成int型;
二、姓名是字符串,不是字符,可以考虑用字符数组来存储。
修改如下:
#include<stdio.h>
#include<stdlib.h>
intmain()
{
inta;
floatb,c;
chard[10];
printf("请输入你的姓名: ");
gets(d);
printf("请输入你的年龄: ");
scanf("%d",&a);
printf("请输入你的身高m: ");
scanf("%f",&b);
printf("请输入你的体重kg: ");
scanf("%f",&c);//以下代码测试输入的正确性
printf("姓名:%s ",d);
printf("年龄:%d ",a);
printf("身高:%.2fm ",b);
printf("体重:%.2fkg ",c);
return0;
}