为什么我的for循环是无限循环(C)?
我有一段代码:为什么我的for循环是无限循环(C)?,c,for-loop,infinite-loop,C,For Loop,Infinite Loop,我有一段代码: #include <stdio.h> #include <ctype.h> #include <unistd.h> #define DATA_SIZE 25 #define LINE 10 #define BYTES_A_ROW ((int)10) #define ADDR_COLUMN_WIDTH ((int)(2 * sizeof(void *)) - 2) //char size of an address =$
#include <stdio.h>
#include <ctype.h>
#include <unistd.h>
#define DATA_SIZE 25
#define LINE 10
#define BYTES_A_ROW ((int)10)
#define ADDR_COLUMN_WIDTH ((int)(2 * sizeof(void *)) - 2) //char size of an address =$
#define BYTE_COLUMN_WIDTH ((int)(BYTES_A_ROW * 3) - 1) // 1 bytes is 2 hex chars + s$
#define COLUMN_SEPARATOR " "
int main() {
typedef unsigned char byte_t;
byte_t data[DATA_SIZE];
int i;
int j;
int remainder = DATA_SIZE % LINE;
// print table header
printf("\n%-*s", ADDR_COLUMN_WIDTH, "Address");
printf("%s", COLUMN_SEPARATOR);
printf("%-*s", BYTE_COLUMN_WIDTH, "Bytes");
printf("%s", COLUMN_SEPARATOR);
printf("%-*s\n", BYTES_A_ROW, "Chars");
for (i = 0; i < ADDR_COLUMN_WIDTH; i++)
printf("-");
printf("%s", COLUMN_SEPARATOR);
for (i = 0; i < BYTE_COLUMN_WIDTH; i++)
printf("-");
printf("%s", COLUMN_SEPARATOR);
for (i = 0; i < BYTES_A_ROW; i++) // number of chars is char-column is exactly$
printf("-");
printf("\n");
for (i = 0; i < DATA_SIZE - remainder; i = +LINE) {
printf("%p ", (void*)&data[i]);
for (j = i; j < i + LINE; j++) {
printf("%02x ", data[j]);
}
for (j = i; j < i + LINE; j++) {
if (isprint(data[j])) {
printf("%c", data[j]);
} else {
printf(".");
}
}
printf("\n");
}
}
#包括
#包括
#包括
#定义数据大小25
#定义第10行
#定义行中的字节((int)10)
#定义地址列宽度((int)(2*sizeof(void*)-2)//地址的字符大小=$
#定义字节列宽度((int)(字节行*3)-1)//1字节是2个十六进制字符+s$
#定义列分隔符“”
int main(){
typedef无符号字符字节;
字节数据[数据大小];
int i;
int j;
整数余数=数据大小%行;
//打印表格标题
printf(“\n%-*s”,地址栏宽,“地址”);
printf(“%s”,列分隔符);
printf(“%-*s”,字节\列\宽度,“字节”);
printf(“%s”,列分隔符);
printf(“%-*s\n”,字节,行,字符);
对于(i=0;i
出于某种原因,我的第四个For循环一直在循环。变量
i
保持10
。。。为什么它不递增,变成20
,并跳出循环?我确信我遗漏了一些明显的东西。你应该在循环中使用I+=LINE
而不是I=+LINE
for(i=0; i<DATA_SIZE-remainder; i=+LINE)
for(i=0;i)您的缩进样式是灾难性的。使用经典的一致样式可获得更好的可读性和更少的错误。在诸如=
之类的二进制运算符周围添加空格会使错误变得明显:i=+LINE
而不是i+=LINE