我想然而更新的字符數組傳遞迴原來的main()
功能,當我嘗試它,它給了我之前的指針在陣列上覆制「字符」不同()[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;
}
在最底層,其中i表示*code[i] = codefinal[i]
是從哪裏獲得的問題。我只是想通過指向我的新的更新數組數組傳回給我的主。
codefinal [14]不存在。它的大小爲10,你的i爲14. – Chris
這個'divisible = testISBN(&code);'也是錯誤的,'code'是一個數組,所以它會自動衰減爲函數調用的第一個元素的指針。 '&'。 - 你的編譯器應該警告你關於不匹配的指針類型 –
這個語法是錯誤的:'* code [i] = codefinal [i];' –