【发布时间】:2020-02-02 09:23:13
【问题描述】:
我的代码最初用全零填充了一个多维 int 数组([20][20])。然后它从文件中读取数字并将其放回该数组中。它成功地从文件中放入数字。但是,有些 0 是我无法摆脱的。
我已经在线检查了锯齿状阵列的解决方案,但我做不到。
//fills the array
for( i = 0; i < 20 ; i++){
for( j = 0; j < 20; j++){
newString[i][j] = 0;
}
}
j = 0;
ctr = 0; //line number
int m = 1,num = 1;
int spaceCounter = 0;
bool isMultiDigit = false;
while (fgets(line, sizeof(line), fp) != NULL){
for(i=0;i<=(strlen(line));i++){
if(line[i]==' '){
spaceCounter++;
}
else if(line[i]=='\n'){
j = 0;
}
else{
if(line[i] != '\0'){
if(line[i+1] == ' ' || line[i+1] == '\n' || line[i+1] == '\0'){
if(isMultiDigit){
newString[ctr][j] = num;
num = 1;
isMultiDigit = false;
}
else{
printf("line[i] = %c. \n", line[i]);
newString[ctr][j] = line[i] - '0';
printf("newString[%d][%d] = %d\n", i,j, newString[ctr][j]);
}
j++;
}
else{
if(!isMultiDigit) num = (line[i]-'0') * 10 + (line[i+1] - '0') ;
else num = num * 10 + (line[i+1] - '0') ;
isMultiDigit = true;
}
}
}
spaceCounter = 0;
}
ctr++;
}
for( i = 0; i < 20 ; i++){
for( j = 0; j < 20; j++){
printf("%d ", newString[i][j]);
}
printf("-------\n");
}
这是文件的内容
3
9 3 34 4 12 5 2
6 3 2 7 1
256 3 5 7 8 9 1
这是填充零然后从文件中读取后的输出
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
9 3 34 4 12 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
6 3 2 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
256 3 5 7 8 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------
所以在这种情况下,去掉 0 后的新数组将是
newArray[0] = {3}
newArray[1] = {9, 3, 34, 4, 12, 5, 2}
newArray[2] = {6, 3, 2, 7, 1}
newArray[3] = {256, 3, 5, 7, 8, 9, 1}
请提供代码片段来解决我的问题。 谢谢哟
【问题讨论】:
-
如果您打印出一个 20x20 的网格,如果一行中没有 20 个元素,您认为会发生什么?
-
您认为应该检查什么来决定何时停止?
-
当你决定停止生产线时应该如何停止?
-
您要打印不带零的
newArray吗?
标签: c arrays jagged-arrays