藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年6月6日 10:18


ascii表的後面為什麼會有........我搞不懂

這條題的程序要輸入一些字符,然後把字符,和對應的ascii碼以表的形式輸出,
我做出來後,輸出的前面都還正常,但是在表的最後面總要輸出些莫名其妙的東西,用vc編譯是輸出一個很大的整數,用tc編譯是多加一個字符。
這到底是怎麼回事, 到底是那裡搞錯了?

[code]
#include <stdio.h>;

#define MAXGET 50

main()
{
        int c, i, j;
        int a[MAXGET];

        i = 0;
        while ( (c = getchar()) != EOF ) {
                a[i] = c;
                i++;
        }
        printf("\n");
        printf("A ascii table\n");
        for ( j = 0; j <= i; ++j ) {
                printf("%5c   %5d,", a[j], a[j]);
                if ( (j % 5) == 4 )    /* the condition of print "\n" */
                        printf("\n");
        }
}[/code]


執行後
abcdefg

a     97, b     98, c     99, d    100, e    101
f    102, g   103    -858993460 最後這個數字是怎麼出來的
而且用tc編譯出來的不同,是多加一個字符

ascii表的後面為什麼會有........我搞不懂

我覺得是你的for循環的範圍有問題,應該是 for ( j = 0; j <i; ++j )
你可以數數,是輸入了幾個字符,輸出又是幾個字符(你最好輸入的文件結束符不能算的,因為它根本沒有存入你定義的數組中)。
不知道正確不,你試試

ascii表的後面為什麼會有........我搞不懂

好像你下面for裡面的j<=i是有問題的,應該去掉等號
[quote="wang_yao"]
(for j=0;j<=i;j++)
[/quote]-->-->

ascii表的後面為什麼會有........我搞不懂

實際上是多執行了一次,最後一次的printf打印結果是不可預料的。

ascii表的後面為什麼會有........我搞不懂

謝謝



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com