Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单C程序产生空白输出-无错误_C_String_Declaration - Fatal编程技术网

简单C程序产生空白输出-无错误

简单C程序产生空白输出-无错误,c,string,declaration,C,String,Declaration,我有一个C程序,它将输入的整数转换成等价的字符串,一个字符数组。例如,整数245应为“2”、“4”、“5”、“0”。整数-493应该是“-”、“4”、“9”、“3”、“0”。 这是Stephen Kochan的《C语言编程》(第三版)一书第10章的练习14。 我的代码: 如您所见,输出为空。编译器不显示错误或警告。这意味着我一定有某种逻辑错误,但我已经彻底检查了代码,找不到逻辑错误。除非是其他类型的错误,比如字符串变量、数组(或者让我有点困惑的东西)的定义。如果有人能帮助我,我将不胜感激。先谢谢

我有一个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 )