我是c編程的初學者。我有一個程序來計算txt文件中的字母並將計數存儲在一個數組中。當我這樣做的循環,如果我採取相同的代碼,並試圖把它變成一個功能,我的數組傳遞給函數,我得到Bus Error (core dumped)
在我的主要功能一切計數但是工作正常在C函數中傳遞數組
#define SIZE 26
#define UPPERCASEA 65
#define LOWERCASEA 97
#define SHIFTCASE 32 //difference between 'A'(int 65) and 'a'(int 97)
int main() {
int letter = 0;
int letters[SIZE] = {0};
printInstructions();
// loopAndCountLetters(letters);
letter = getchar();
// get rest of characters until EOF
while (letter != EOF) {
// if necessary change to uppercase
letter = changeToUpperCase(letter);
// increment proper letter in array
letters[letter - UPPERCASEA]++;
// get next letter
letter = getchar();
} // end of while
printLetterArray(letters, SIZE);
return 0;
}
。下面的功能:在主要功能
函數調用:
loopAndCountLetters(letters);
函數定義:
void loopAndCountLetters(int array[]) {
int letter = 0;
letter = getchar();
// get rest of characters until EOF
while (letter != EOF) {
// if necessary change to uppercase
if (letter >= LOWERCASEA) {
// shift value to uppercase
letter = letter - SHIFTCASE;
}
// increment letter in array
array[letter - UPPERCASEA]++;
letter = getchar();
} //end of while
return;
}
句子的例子可以正常工作:
這正常工作。
即使這個工程?是的,它確實。
這會導致錯誤
任何與冒號:導致錯誤
請嘗試創建一個[最小,***完整***和可驗證示例](http://stackoverflow.com/help/mcve)並向我們顯示,幷包含您擁有的所有宏和其他定義目前被排除在外。例如,什麼是「SIZE」?或'LOWERCASEA'和'UPPERCASEA'?或SHIFTCASE? –
爲什麼你不使用['toupper'](http://en.cppreference.com/w/c/string/byte/toupper)? –
發佈所有符號的定義。函數中的代碼與'main'中的前一個代碼不同。 – chqrlie