c存儲中文亂碼
❶ 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;
}
❷ c語言出現亂碼
有兩個問題:
一、變數a是float型,用%d輸入輸出會出錯,可以考慮把變數d定義成int型;
二、姓名是字元串,不是字元,可以考慮用字元數組來存儲。
修改如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
float b,c;
char d[10];
printf("請輸入你的姓名:\n");
gets(d);
printf("請輸入你的年齡:\n");
scanf("%d",&a);
printf("請輸入你的身高m:\n");
scanf("%f",&b);
printf("請輸入你的體重kg:\n");
scanf("%f",&c); //以下代碼測試輸入的正確性
printf("姓名:%s\n",d);
printf("年齡:%d\n",a);
printf("身高:%.2fm\n",b);
printf("體重:%.2fkg\n",c);
return 0;
}
❸ C語言控制台程序,中文輸出變成亂碼,怎麼解決
這里涉及到一個字元在源代碼(文本)中,編譯好的二進制文件中,以及最後控制台輸出編碼形式的區別.
首先,要明確一點:C(語言/程序)並不理解ANSI,UTF-8以及任何其他編碼.它只知道處理你給它的字元的二進製表示.
在簡體中文Windows下,默認的文本保存編碼是ANSI(即GBK);Linux下根據系統locale設定,一般應該是(zh_CN.UTF-8).(以下基於簡體中文Windows)
1)對於源文件中保存的"中文"這個字元串,VS2008看到的就是"0xd6d0"和"0xcec4"的形式(默認ANSI編碼得到).但編譯器才不管是不是GBK神馬的,它就管那串數字.
區別,MinGW看到的是"0xe4b8ad"和"0xe69687"(gcc默認UTF-8).注意,用MinGW編譯的源文件中有中文寬字元必須保存為UTF-8編碼.
2)然後,在二進制文件中的存儲形式,對傳統的字元串(char str[] = "中文";),編譯器什麼都不做,直接把那串數字(如"0xd6d0","0xcec4")搬過去塞進二進制文件.
但對於寬字元串(wchar_t wstr[] = L"中文";),編譯器會將其做轉換,轉換成Unicode編碼格式(在Windows是UTF-16,而Linux下是UTF-32).如"中文"的16位Unicode是"0x4e2d"和"0x6587",然後把這串轉換後的數字("0x4e2d","0x6587")塞進二進制文件中.(這里VS和MinGW做的沒有區別)
這里有點需要注意,編譯器必須知道你的源文件保存的編碼!如VS默認是ANSI編碼,如果你用UTF-8保存.c源文件去用VS打開看一定是亂碼.同理如果你用mingw編譯ANSI編碼保存的源文件,也會出錯!(但可以修改編譯選項解決,見文章末尾) 在本文這里這個原因其實很好理解,因為編譯器需要知道,如果它要將一個保存在文件中的字元轉成寬字元時,是從什麼編碼轉到Unicode.(可見上述VS是GBK->Unicode,而MinGW是UTF-8->Unicode)
❹ C語言運行的時候漢字全部亂碼怎麼回事
1、漢字亂碼是因為緩沖區有字元,需要用fflush(stdin);來清空鍵盤緩沖區,
使用getch等都是治標不治本的辦法,可以多學習一下fflush的使用,對於大批量的手動輸入,很用。
2、常式:
#include"stdio.h"
#include"stdlib.h"
#include<conio.h>
main()
{
charx;
while(1)
{
printf("請輸入一個小寫字母:");
fflush(stdin);//清空鍵盤緩沖區
x=getchar();
printf("大寫字母為: ");putchar(x-32);
}
}