程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c-C語言數組大小寫轉化後多輸出一行亂碼

c-C語言數組大小寫轉化後多輸出一行亂碼

編輯:編程綜合問答
C語言數組大小寫轉化後多輸出一行亂碼
#include "stdio.h"
#include "stdafx.h"
#include "iostream"

using namespace std;


int main()
{
    char c[256], d[256];
    int i = 0;
    while
        ((c[i++] = getchar()) != '\n');
    c[i] = '\0';
    i = 0;
    printf("%s", c);
    printf("\n");
    while (c[i])
    {
        if ('a' <= c[i] && c[i] <= 'z')
        {
            c[i] -= 32;
        }
        else if ('A' <= c[i] && c[i] <= 'Z')
        {
            c[i] += 32;
        }
        d[i] = c[i];
        i++;
    }
    printf("%s", d);
    printf("\n");
    return 0;
} 

如圖代碼所示,每次轉化後都會多輸出一行亂碼,問題已經解決,
我把while(c[i])換成while(i<sizeof(c))就輸出正常了,我想知道為什麼
while(c[i])有什麼錯誤,多謝大神~!

最佳回答:


建議你先初始化數組 c 和 d 的所有元素為零,因為局部變量的初始值是隨機的。
假如你只給 c 和 d 的前 100 個元素賦值了,才能後面的 156 個元素的值就是隨機數。當你用 c[i] 判斷時,因為沒有 0 數值的存在,導致越界了。

91program
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved