gpt4 book ai didi

c - 通过指针传回更新后的 Char 数组

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

我试图将更新后的 char 数组传回原始 main() 函数,但是当我尝试在它之前用指针复制该数组时,它给了我“Char "与 char() [15]'

的间接级别不同

这是一个 ISBN 验证器程序。

这里是:

int main(void)
{
int divisible;
char choice, trash;
char code[15];


do
{
printf("Enter an ISBN (book) number:\n");
fgets(code, 15, stdin);

printf("The ISBN entered is:%s\n", code);
divisible = testISBN(&code);
if (divisible == 1)
printf("\n\n\tValid ISBN Number\n");
else
printf("\n\n\tInvalid ISBN Number\n");

printf("\nDo you wish to continue? (Y/N)\n");
choice = getchar();
trash = getchar();
} while (toupper(choice) != 'N');

return 0;
}


int testISBN(char *code)
{
int i;
int sum = 0;
int weight = 10;
char codefinal[10];
int x = 0;
for (i = 0; i<15; i++)
{
int chVal;
if ((i == 9) && (toupper(code[i]) == 'X'))
{
printf("%c",code[i]);
chVal = 10;
}
else
{
chVal = code[i] - '0';
}
if (chVal == 0 || chVal == 1 || chVal == 2 || chVal == 3 || chVal == 4 || chVal == 5 || chVal == 6 || chVal == 7 || chVal == 8 || chVal == 9) {
char y = (char)chVal;
codefinal[x] = y;
x++;
}

sum += chVal * weight;
weight--;
}
printf("sum is %d", sum);

for (i = 0; i < 15; i++) {
*code[i] = codefinal[i];
printf("%c", code);
}
return (sum % 11) == 0;
}

在我说的*code[i] = codefinal[i]的最底部是我遇到问题的地方。我只是想通过将新更新的数字数组指针传回我的主数组。

最佳答案

在代码中进行以下更改:

  • 更改函数原型(prototype) int testISBN(char* code)int testISBN(char code[])
  • 更改通话号码 testISBN(&code);testISBN(code);
  • 换行 *code[i] = codefinal[i];code[i] = codefinal[i];
  • 排队printf("%c", code);您打印的不是 code[] 的值,而是地址。所以将其更改为 printf("%c", code[i]);请注意code[]还包含一些不可打印的字符。
  • 建议:您可以换线 if (chVal == 0 || chVal == 1 || chVal == 2 || chVal == 3 || chVal == 4 || chVal == 5 || chVal == 6 || chVal == 7 || chVal == 8 || chVal == 9)if((chVal >= 0) && (chVal <= 9))为了简单起见。

关于c - 通过指针传回更新后的 Char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44715175/

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