gpt4 book ai didi

从函数、指针读取输入时,cs50 Credit.c 停止工作?

转载 作者:行者123 更新时间:2023-11-30 19:05:25 25 4
gpt4 key购买 nike

我一直在自学一些 C 语言,并解决了 cs50 类(class)中的问题。我的程序运行良好,但我试图使其更简单并将其划分为尽可能多的函数。除了 readInput 函数之外,一切正常。我很确定这与数组中的指针如何工作有关,我尝试做一些有人在这里建议的事情,但我遇到了段错误,我尝试了不同的方法来做到这一点,但一切都会导致更多错误。任何提示将不胜感激!

void readInput(int **digits){
char c; // char to get the digits
int position = 0; // pos in the array
while ((c = getchar()) != '\n') {
if (c >= '0' && c <= '9') {
(*digits)[position] = c - '0';
position++;
}
}
}

int main(int argc, char const *argv[])
{
printf("Please enter your credit card number\n");
int digits[16];
intitializeArray(16, digits);
readInput(&digits);
int length = getLength(digits);
int resultSecondDigits = getValueSecondDigits(length, digits);
int resultFirstDigits = getValueFirstDigits(length, digits);
checkValidity(resultFirstDigits+resultSecondDigits, digits);
return 0;
}

最佳答案

正确阅读它所说的编译器警告

pembroke11.c:2:6: note: expected ‘int **’ but argument is of type ‘int (*)[16]’ void readInput(int **digits){

应该是这样的

void readInput(int (*digits)[16]){ 
/* some code */
}

或者

无需将digits的地址传递给readInput()函数,只需传递数组名称即可。

void readInput(int *digits){
int c; // char to get the digits
int position = 0; // pos in the array
while ((c = getchar()) !='\n') { /* type of c should be int as getchar() returns int */
if (c >= '0' && c <= '9') {
digits[position] = c - '0';
printf("%d\n", digits[position]);
position++;
}
}
}

关于从函数、指针读取输入时,cs50 Credit.c 停止工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49845617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com