定义了一个数组A[100],未赋初值,在函数中调用数组A,并多次使用该函数,发现A被覆盖(由于第一次使用给A 赋值的长度大于第二次,所以第二次赋值结果错误),但在主函数中直接使用A,并赋值,无误
错误代码:
#include<stdio.h>
#include<string.h>
void swap(char a[],char A[]){
int len=strlen(a);
int j=0;
for(int i=0;i<len;i++){
if(a[i]>='0'&&a[i]<='9'){
A[j]=a[i];
j++;
}
A[j]='\0';
}
}
int main(void){
char a[100],b[100]
while(scanf("%s%s",a,b)!=EOF){
char A[100],B[100];
int n1,n2;
swap(a,A);
swap(b,B);
sscanf(A,"%d",&n1);
sscanf(B,"%d",&n2);
if(a[0]=='-'){
n1=-n1;
}
if(b[0]=='-'){
n2=-n2;
}
printf("%d",n1+n2);
}
return 0;
}
###### 正确代码
```c++
#include<stdio.h>
#include<string.h>
int main() {
char a[20], b[20], A[20], B[20];
int n1, n2;
while (scanf("%s %s", a, b) != EOF) {
int a_len = strlen(a);
int j = 0;
for (int i = 0; i < a_len; i++) {
if (a[i] >= '0' && a[i] <= '9') {
A[j] = a[i];
j++;
}
}
A[j] = '\0';
sscanf(A, "%d", &n1);
if (a[0] == '-') { n1 = -n1; }
int b_len = strlen(b);
int k = 0;
for (int i = 0; i < b_len; i++) {
if (b[i] >= '0' && b[i] <= '9') {
B[k] = b[i];
k++;
}
}
B[k] = '\0';
sscanf(B, "%d", &n2);
if (b[0] == '-') { n2 = -n2; };
printf("%d\n", n1 + n2);
}
return 0;
}
######想知道为什么第二种可行,数组值不会改变吗