Key*_*yPi 0 c arrays while-loop
我试图从用户的输入创建一个数组,然后我会分析它并判断它是否是一个对称数组。
但是我的 while 循环中已经有问题了,我不明白问题出在哪里。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
int array[] = {};
int i = 0;
int user = 0;
int k = 0;
int size_array = 0;
int j = 0;
printf("Write some numbers, -1 to end \n");
while(user != -1){
printf("k = %d\n", k);
scanf("%d", &user);
array[i] = user;
i = i+1;
k = k+1;
}
size_array = k;
printf("nb of entries = %d\n", size_array);
for (j = 0; j < size_array; j++){
printf("%d",array[j]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
Write some numbers, -1 to end
k = 0
1
k = 1
1
k = 2
1
k = 2
1
k = 3
1
k = 2
2
k = 3
2
k = 4
2
k = 5
2
k = 6
2
k = 7
2
k = 8
-1
nb of entries = 9
919026867601999609396268686841986531
Process returned 0 (0x0) execution time : 10.320 s
Press any key to continue.
Run Code Online (Sandbox Code Playgroud)
问题出在哪里???抱歉有多个变量(jki),但我认为对不同的循环使用相同的变量会产生干扰......
问题是
int array[] = {};
Run Code Online (Sandbox Code Playgroud)
这基本上是一个零大小的数组,在 C 中,数组不能重新调整大小。
正是出于这个原因,array[i]您代码中的每次访问都是无效的内存访问,它会调用未定义的行为。
您必须要么提供一个更长的初始化列表的大小,以使数组具有有意义的大小以使其可用。