c語言這個為什麼會亂碼,C語言出現亂碼

本文目錄一覽:

c語言輸出亂碼,求解決方法

輸出亂碼的原因見下圖標紅的地方:

第一個標紅處的for循環語句後面多了分號; 導致下面{}中的語句與for無關

而printf()語句中的i此時等於N,又stu[N]上沒有數據,所以會輸出亂碼;

同理後面輸出最高成績學生時,i的值也為N,因此最後列印stu[i]時也會輸出亂碼;

我覺得你的本意應該是輸出stu[no],所以要將最後printf中的stu[i]都改為stu[no]

但上面用no記錄成績最高學生下標的語句no=i; 應該寫在if內,即要如下修改:

if (maxstu[i].ave) {

max=stu[i].ave;

no=i;

}

還要注意max的類型應該為float,no應該賦初值0,因此前面要改為:

float max;

max=stu[0].ave;

no=0;

最後,建議將struct student結構體的定義放在main()函數之外

如果幫到你,給個採納哈~

C語言問題,為什麼輸出總是亂碼

看一眼就知道。。亂碼是因為你的指針沒有賦NULL,是野指針,指向了不明區域,所以會出現亂碼,以後定義指針最好int

*a

=

NULL;這樣子

為什麼C語言輸出文件內容亂碼

這種文本文件,不能直接使用讀到結構的方法。因為結構里會有非文本的控制符,比如字元串結束符’\0’。

一般使用直接讀到結構的方法,只限於二進位格式的文件,並且最好是讀自己創建的文件,別人創建的,格式剛剛好合適創建結構的也很少。

你這個亂碼,你的文件里,學號長度為10個位元組,所以你定義學號這個變數時,必須定義11個位元組的長度,因為字元串的變數,必須要有一個’\0’作為結束,不然的話,顯示的時候,沒有結束符就會接著往下顯示,就會有亂碼出現。

如果僅僅是這三行的話,倒也能使用結構來讀,比如結構里定義num[11],讀完後執行一下num[10] = ‘\0’;給它補一個結束符。但如果有人叫「王老四」,名字有的是2個字,有的是3個字這樣,你這個就不好判斷了。

這種文本,最好是使用fscanf(“%s %s %s %s %s”, num, name, sex, date, major)的形式來讀取。每次讀取一行。(注意字元串定義變數時,長度一定要多加1位)。

我的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型數據。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/255094.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:14
下一篇 2024-12-15 12:14

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • Python zipfile解壓文件亂碼處理

    本文主要介紹如何在Python中使用zipfile進行文件解壓的處理,同時詳細討論在解壓文件時可能出現的亂碼問題的各種解決辦法。 一、zipfile解壓文件亂碼問題的根本原因 在P…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python爬蟲亂碼問題

    在網路爬蟲中,經常會遇到中文亂碼問題。雖然Python自帶了編碼轉換功能,但有時候會出現一些比較奇怪的情況。本文章將從多個方面對Python爬蟲亂碼問題進行詳細的闡述,並給出對應的…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python3亂碼轉中文

    本文將詳細介紹如何轉換Python3中的亂碼為中文字元,幫助Python3開發工程師更好的處理中文字元的問題。 一、Python3中文亂碼的原因 在Python3中,中文字元使用的…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論