简单C程序产生空白输出-无错误
我有一个C程序,它将输入的整数转换成等价的字符串,一个字符数组。例如,整数245应为“2”、“4”、“5”、“0”。整数-493应该是“-”、“4”、“9”、“3”、“0”。 这是Stephen Kochan的《C语言编程》(第三版)一书第10章的练习14。 我的代码: 如您所见,输出为空。编译器不显示错误或警告。这意味着我一定有某种逻辑错误,但我已经彻底检查了代码,找不到逻辑错误。除非是其他类型的错误,比如字符串变量、数组(或者让我有点困惑的东西)的定义。如果有人能帮助我,我将不胜感激。先谢谢你简单C程序产生空白输出-无错误,c,string,declaration,C,String,Declaration,我有一个C程序,它将输入的整数转换成等价的字符串,一个字符数组。例如,整数245应为“2”、“4”、“5”、“0”。整数-493应该是“-”、“4”、“9”、“3”、“0”。 这是Stephen Kochan的《C语言编程》(第三版)一书第10章的练习14。 我的代码: 如您所见,输出为空。编译器不显示错误或警告。这意味着我一定有某种逻辑错误,但我已经彻底检查了代码,找不到逻辑错误。除非是其他类型的错误,比如字符串变量、数组(或者让我有点困惑的东西)的定义。如果有人能帮助我,我将不胜感激。先谢谢
for( --i; i < 0; ++j, --i )
否则,循环将永远不会执行,您将在stringInt
的第一个插槽中设置NUL终止符。因此,printf
不打印任何内容,只打印一条换行
for( --i; i < 0; ++j, --i )
stringInt[j] = tempInt[i];
否则,循环将永远不会执行,您将在stringInt
的第一个插槽中设置NUL终止符。因此,printf
不打印任何内容,只打印一条换行。用于(--i;i<0;++j,--i)
for( --i; i < 0; ++j, --i )
stringInt[j] = tempInt[i];
stringInt[j]=tempInt[i];
你有一个合乎逻辑的问题。当满足条件i<0
时执行此循环,但该条件从未满足,因为程序中的i
应该是=0
。for(--i;i<0;++j,--i)
stringInt[j]=tempInt[i];
你有一个合乎逻辑的问题。当满足条件i<0
时执行此循环,但由于程序中的i
假定为=0
,因此从未满足该条件。该条件是循环继续的条件,因此:
for( --i; i < 0; ++j, --i )
该条件是循环继续的条件,因此:
for( --i; i < 0; ++j, --i )
顺便说一句,char tempInt[10],stringInt[10]代码>对于int32_t(-2147483648…2147483647)来说很小,不管大小如何(顺便说一下,您是正确的),您应该初始化数组
char tempInt[10]={0},stringInt[10]={0}代码>。尤其是在使用字符数组时。虽然您可以在下面正确地使用null终止符,但使用null终止符填充它们始终是一种好的做法。因此,初始化所有数组,尤其是字符串。明白了。顺便说一下,char tempInt[10],stringInt[10]代码>对于int32_t(-2147483648…2147483647)来说很小,不管大小如何(顺便说一下,您是正确的),您应该初始化数组char tempInt[10]={0},stringInt[10]={0}代码>。尤其是在使用字符数组时。虽然您可以在下面正确地使用null终止符,但使用null终止符填充它们始终是一种好的做法。因此,初始化所有数组,尤其是字符串。知道了。
for( --i; i < 0; ++j, --i )
for( --i; i >= 0; ++j, --i )