我编写了这个程序,要求你从元素编号1输入一维数组中的元素值,当你输入值0时它会停止。
void main() {
int *A;
int n, j, B;
int i = 1;
A = malloc(i * sizeof(int));
printf("Enter the element A[%d] = ", i);
scanf("%d",&A[i]);
while (i>=1) {
if (A[i] != 0) {
i = i + 1;
A = realloc(A, i * sizeof(int));
printf("Enter the element A[%d] = ",i);
scanf("%d",&A[i]);
} else {
break;
}
}
for (j = 1 ; j <= i; j++) {
printf("\t%d", A[j]);
}
for (j = 1; j <= i; j++) {
free(A[j]);
}
}
正如你所看到的,甚至地方都被替换为0.我无法弄清楚为什么以及如何解决这个问题。
答案 0 :(得分:0)
以下提议的代码
现在是代码
#include <stdio.h> // scanf(), printf(), perror()
#include <stdlib.h> // realloc(), exit(), EXIT_FAILURE
int main( void )
{
int *A = NULL;
int temp;
size_t i = 0;
printf("Enter the element A[%lu] = ", i+1);
while( 1 == scanf("%d",&temp) )
{
int* tempRealloc = realloc(A, (i+1) * sizeof(int));
if( !tempRealloc )
{
perror( "realloc failed" );
free( A ); // cleanup
exit( EXIT_FAILURE );
}
// implied else, realloc successful
A = tempRealloc;
A[i] = temp;
i++;
if( !temp ) // 0 entered by user
break;
printf("Enter the element A[%lu] = ",i+1);
}
for (size_t j = 0 ; j < i; j++)
{
printf("\t%d", A[j]);
}
free( A );
} // end function: main