我是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