① 用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;
}