我是C的新手,正在测试它的一些功能。
当我尝试在for
循环中创建一个字符数组时,我会收到错误。
int i,j;
//Fixed
char fila0[11] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
char fila1[11] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
char fila2[11] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
char fila3[11] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
//The problem
char fila0[11],fila1[11],fila2[11],fila3[11];
for (i = 0; i<4; i++){
for(j = 0; j<11; j++){
switch(j){
case 0:
fila0[j] = struct_juego.tablero[i][j];
break;
case 1:
fila1[j] = struct_juego.tablero[i][j];
break;
case 2:
fila2[j] = struct_juego.tablero[i][j];
break;
case 3:
fila3[j] = struct_juego.tablero[i][j];
break;
}
}
}
fila0
现在充满了奇怪的字符,它们不是数组字符
如果我打印fila0
我得到了这个
๗ ๘ ๙ ๚ 8∆ ∏
答案 0 :(得分:0)
以下是显示每一步输出的示例:
#include <stdio.h>
#include <stdlib.h>
int main (void) {
int i, j;
char hi[11];
char array[9][11]; //---- need to declare type.
// Before initialization
fprintf(stdout, "Before initialization, array contains: \n");
for (i = 0; i < 9; i++) {
for (j = 0; j < 11; j++)
fprintf(stdout, "%c ", array[i][j]);
fprintf(stdout, "\n");
}
fprintf(stdout, "Before initialization, hi contains: \n");
for (j = 0; j < 11; j++)
fprintf(stdout, "%c ", hi[j]);
fprintf(stdout, "\n");
for (j = 0; j < 11; j++) { // ----- initalize array. Initializing hi also, to show difference later.
hi[j] = 'a';
for (i = 0; i < 9; i++)
array[i][j] = 65 + i;
}
// After initialization
fprintf(stdout, "initialized array contains: \n");
for (i = 0; i < 9; i++) {
for (j = 0; j < 11; j++)
fprintf(stdout, "%c ", array[i][j]);
fprintf(stdout, "\n");
}
fprintf(stdout, "initialized hi contains: \n");
for (j = 0; j < 11; j++)
fprintf(stdout, "%c ", hi[j]);
fprintf(stdout, "\n");
for (i = 0; i < 9; i++) {
for (j = 0; j < 11; j++) {
hi[j] = array[i][j];
}
}
// After copying
fprintf(stdout, "After copying, array contains: \n");
for (i = 0; i < 9; i++) {
for (j = 0; j < 11; j++)
fprintf(stdout, "%c ", array[i][j]);
fprintf(stdout, "\n");
}
fprintf(stdout, "After copying, hi contains: \n");
for (j = 0; j < 11; j++)
fprintf(stdout, "%c ", hi[j]);
fprintf(stdout, "\n");
return 0;
}
答案 1 :(得分:-1)
缺少初始化。 而不是做:
char fila0[11] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
char fila1[11] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
char fila2[11] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
char fila3[11] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
做的:
int len = 10;
char fila0[len];
char fila1[len];
char fila2[len];
char fila3[len];
for (int i=0; i<11; i++) {
fila0[i] = ' ';
fila1[i] = ' ';
fila2[i] = ' ';
fila3[i] = ' ';
}
这样每个人都可以初始化,如果你想改变矢量大小,它会更实用。