我想在大數之間添加,但它給出了一個錯誤。我正在使用一個字符陣列。第55行有錯誤。[錯誤]下標值既不是陣列也不是指標也不是向量
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
int chrtoint(char a){
int i;
for (i = 48; i<=57; i )
if (toascii(i)==a) return i-48;
return 0;
}
void main(){
char n1[80];
char n2[80];
printf("Enter First Number:");
scanf("%s", &n1);
printf("\nEnter Second Number:");
scanf("%s", &n2);
sumNumber(n1 , n2);
}
void sumNumber(char n1 , char n2){
int rs[80];
int c1, c2;
int i,j,m, cmax, sum;
c1 = strlen(n1);
c2 = strlen(n2);
strrev(n1);
strrev(n2);
cmax = c1;
if(c1<c2){
cmax = c2;
}
m=0;
for(i=0; i< cmax; i ){
if(c1==c2 || (i < c1 && i < c2)){
sum = m chrtoint(n1[i]) chrtoint(n2[i]); // error is given in this line
}else if(i >=c1){
sum = m chrtoint(n2[i]);
}else if(i >=c2){
sum = m chrtoint(n1[i]);
}
rs[i] = sum%10;
m = sum/10;
}
if(m){
rs[i]=m;
i ;
}
printf("\nResult: ");
for(j=0; j < i; j ){
printf("%d", rs[i-j-1]);
}
}
如果我問了同樣的問題,我很抱歉。這是我第一次在這個網站上發布問題。請告訴我是否有問題。
uj5u.com熱心網友回復:
您的編譯器應該顯示幾個警告和錯誤訊息。
首先,要么給函式添加一個原型,要么void sumNumber(char n1, char n2)把它移到上面main。說到這,你的main函式原型不是好的做法(在某些編譯器中是非法的);它應該是int main(void)or int main(int argc, char *argv[])。
這里:
void sumNumber(char n1, char n2)
這些變數在您的主函式中宣告為字符陣列,因此引數sumNumber應該是字符陣列:
void sumNumber(char n1[], char n2[])
或指向字符的指標:
void sumNumber(char *n1, char *n2)
還有一件事,在這些行中:
scanf("%s", &n1);
scanf("%s", &n2);
您將指標傳遞給一個 80 個字符的陣列,這是無效的;它應該是
scanf("%s", n1);
scanf("%s", n2);
更正這些錯誤,您的程式應該可以正常運行。
uj5u.com熱心網友回復:
當我們定義 char 陣列用作字串時(我們不使用地址掃描它),因為大多數編程語言中的字串已經被視為地址(參考指標)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/431085.html
上一篇:realloc中的無效指標
