简单的 C 程序产生空白输出 - 没有错误

Simple C program produces Blank Ouput - No Errors

我有一个 C 程序,它将输入的整数转换为等效的字符串,即字符数组。例如,整数 245 应该是 '2'、'4'、'5'、'\0'。而整数-493 应该是'-'、'4'、'9'、'3'、'\0'。 它是 Stephen Kochan 着的《C 语言编程》(第三版)一书第 10 章的练习 14。 我的代码:

#include <stdio.h>

int main ( void ){

int integer = 245;

const char stringIntegers[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
int i = 0, j = 0;
char tempInt[10], stringInt[10];


// Checks whether the input integer is negative in order to store a '-', in [0] of the output string
if ( integer < 0 ){
    stringInt[0] = '-';
    j = 1;
    integer = -integer;
}

// extract digits of the input integer and store them, in opposite order (last to first digit), in temporary string
while ( integer ){
    tempInt[i] = stringIntegers[integer % 10];
    integer /= 10;
    ++i;
}

// now store them in the right order to output string
for( --i; i < 0; ++j, --i )
    stringInt[j] = tempInt[i];

// Finally, copy the null zero terminator to output string
stringInt[j] = '[=10=]';


printf("%s\n", stringInt );

return 0;
}

输出:

Process returned 0 (0x0)   execution time : 0.014 s Press any key to
continue.

如您所见,输出为空白。编译器没有显示错误或警告。这意味着我一定有某种逻辑错误,但我已经仔细检查了我的代码,但我找不到逻辑错误。除非它是另一种错误,比如字符串变量的定义、数组(或让我有点困惑的东西)。如果有人能帮助我,我将不胜感激。提前谢谢你。

for( --i; i < 0; ++j, --i )

应该是

for( --i; i >= 0; ++j, --i )

否则,循环永远不会执行并且您在 stringInt 的第一个槽中设置了 NUL 终止符。因此,printf 什么都不打印,只打印一个换行符。

for( --i; i < 0; ++j, --i )
    stringInt[j] = tempInt[i];

你的逻辑有问题。当满足条件 i < 0 但从未满足条件时执行此循环,因为您的 i 在您的程序中应该是 >= 0

for loop条件就是循环继续的条件,所以:

for( --i; i < 0; ++j, --i )

应该是:

for( --i; i >= 0; ++j, --i )