我正在尝试用C语言编写一个程序,该程序根据用户输入生成一个螺旋线,并将其打印到控制台。我不知道如何访问我在“螺旋”结构中定义的二维数组"data“。如何修复“警告:来自不兼容指针类型的赋值”错误?
#include <stdio.h>
typedef struct Spiral {
int size;
int **data;
} Spiral;
Spiral generateSpiral(int size);
void printSpiral(Spiral spiral);
static int rotate();
int main() {
int size;
scanf("%d", &size);
Spiral spiral = generateSpiral(size);
printSpiral(spiral);
return 0;
}
Spiral generateSpiral(int size) {
int data[size][size];
int i;
for (i = 0; i < size; i++) {
int j;
for (j = 0; j < size; j++) {
data[i][j] = 0;
}
}
for (i = 0; i < size; i++) {
data[0][i] = 1;
}
int currX = 0;
int currY = size - 1;
for (i = size - 1; i > 0; i -= 2) {
int j;
for (j = 0; j < 2; j++) {
int k;
switch (rotate()) {
case 0:
for (k = 0; k < i; k++) {
data[++currX][currY] = 1;
}
break;
case 1:
for (k = i; k > 0; k--) {
data[currX][--currY] = 1;
}
break;
case 2:
for (k = i; k > 0; k--) {
data[--currX][currY] = 1;
}
break;
case 3:
for (k = 0; k < i; k++) {
data[currX][++currY] = 1;
}
break;
}
}
}
Spiral spiral;
spiral.size = size;
spiral.data = data;
return spiral;
}
void printSpiral(Spiral spiral) {
int i;
for (i = 0; i < spiral.size; i++) {
int j;
for (j = 0; j < spiral.size; j++) {
switch (spiral.data[i][j]) {
case 0:
printf(" ");
break;
case 1:
printf("#");
break;
}
}
printf("\n");
}
}
static int rotate() {
static int val = 0;
int tmp = val;
val++;
if (val > 3)
val = 0;
return tmp;
}发布于 2017-05-12 06:39:32
您的问题是由于int和vectors size函数返回的无符号int之间不匹配。将int i,j更改为size_t类型,这样它们也是一个无符号整数,就像向量的大小一样。这就是你收到警告的原因。
https://stackoverflow.com/questions/26454022
复制相似问题