⑴ c語言問題,輸出結果是亂碼
你在定義x結構體的同時,已經定義了一個x型的全局變數student1並賦了初值,然而,你的main函數里又定義了同名的局部變數student1並沒有賦初值。main函數執行時,這里的student1是未賦初值的,所以student1.name的值並不是"星哥",你以%s輸出它,自然會顯示為「亂碼」。
改正方法是,既然你已經定義了全局變數,main函數里就不要再定義了。
#include<stdio.h>
#include<string.h>
structx{
charname[10];
intage;
charaddress[10];
charsex[10];
}student1={"星哥",20,"天水","女"};
intmain(){
/*structxstudent1;注釋掉這一句就會是正常的*/
printf("%s ",student1.name);
return0;
}
運行結果
⑵ C語言問題,為什麼輸出總是亂碼
看一眼就知道。。亂碼是因為你的指針沒有賦NULL,是野指針,指向了不明區域,所以會出現亂碼,以後定義指針最好int
*a
=
NULL;這樣子
⑶ 我的C語言程序運行後為什麼是亂碼
有幾個小問題:
第一:c語言一般不支持中文,如果你用vc6.0++就是無法列印中文,一定會亂碼,建議用英文;
第二:如果你用的c語言編譯器支持中文,如devc++,則可以使用中文;
第三:我們的使用的字元格式,最多的是UTF-8,把默認代碼頁格式改為UTF-8試試吧
希望我的分享對你有用,感謝採納
⑷ C語言為什麼會出現亂碼
完全沒看懂你的程序。
有明顯的幾個奇怪的地方。
int time = { 1 };
unsigned int k = { 0 };
這兩句不符合C語言語法吧,大括弧一般很少用的,一般用在數組上,但是你的變數明顯不是數組啊。
k = (unsigned int)malloc(sizeof(unsigned int) * time);
malloc函數,返回的是指針吧。你強制轉換的不是指針啊,一般沒人這么用,沒看懂,為什麼要強制轉換成unsigned int ?應該寫錯了吧,是 unsinged int *吧。
p = getchar();//
沒看懂,這里為什麼要getchar,是因為怕有臟東西嗎?這里會出問題的,但是代碼看不出會發生什麼問題。
scanf_s("%d", k, 8);
這里最好改成這樣吧,scanf_s("%d", k, sizeof(unsigned int));這樣比較安全,反正你要的是int,直接用sizeof,算出int的位元組數就可以了,不用自己知道int是多少個位元組,這樣可以避免出錯。
key[i] = { 0 };
這里則是,完全看不懂,因為不知道key是什麼,只知道是個key的數組,是什麼類型的,完全沒懂,只知道初始化為0。
key[i] = k; 這里完全沒看懂,只能猜了,循環32次,k是一個int的數,一般是4個位元組的數,每個位元組是8位,所以一個int是32位,你循環32遍,看起來是想把這個int數,一位一位的輸出的樣子。但是前面k是用mallco申請,k應該是個指針,不是int變數。直接把指針給一個數組,有點奇怪,所以應該是key[i]=*key;但是看起來,你是要一位一位的數據,而不是一整個int數,但是這里有個問題,我不知道,你是要低位先出,還是高位先出,而且C語言,想要一位一位的數據,要使用<<,>>左移和右移指令(這里不是C++,所以沒有被C++的std::cout復用於輸出,這是個標准C語言的底層操作符,一般嵌入式的用的多,IT用的少,所以一般不常用),所以一位一位的輸出應該寫成key[i]=(*k)>>1;或者key[i]=(*k)<<1,這樣是分別是左移一位,右移一位後,把數據給key的數組,這里,要根據你自己的代碼要實現的功能,去調整。
printf("%d", key); 我不知道,你是想輸出位數據,還是什麼。如果想看位數據,應該輸出二進制的數不就好了。而不用輸出int型數據。
⑸ C語言編程出現漢字輸出亂碼現象
C語言中一個漢字是由兩個位元組來表示的
而C語言編程主要是以位元組為單位來顯示
所以你的C語言輸出中,如果漢字顯示只顯示了一個位元組,就會有亂碼出現了
正常的做法是,你的printf輸出時,符號的長度要為偶數位元組。
⑹ 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語言)為什麼這段程序編譯運行以後是亂碼
#include<stdio.h>
intmain(){
charc;
scanf("%c",&c);
chara,b,d;
for(a='A';a<=c;a++){
for(b=a;b<c;b++){//輸出前置空格
printf("");
}
for(b='A';b<=a;b++){//輸出A-a當前的值
printf("%c",b);
}
for(d=a-1;d>='A';d--){//輸出一行a當前之後的大寫字母
printf("%c",d);
}
printf(" ");//換行,一行輸出結束
}
return0;
}
⑻ c語言編譯運行亂碼是什麼原因
這種情況多數是由於操作系統的語言選項不正確引起的。建議你查看一下控制面板中的區域和語言選項,特別是有關「非Unicode程序的語言」,一定要選擇成「中文(簡體,中國)」。然後重啟電腦。
⑼ C語言中,這段代碼運行時為啥會出現亂碼
原有的程序代碼沒有任何的啊,實現了所有的要求,並且沒有出現亂碼: