,我對我自己的實踐C編程,我被要求寫一個整數到字符串函數的垃圾。我的代碼如下。正確的功能輸出導致的printf
一切正常,直到我試圖打印出主函數中的函數返回。當「自動」在Visual Studio中顯示我時,我有正確的返回值,但它在printf函數中變得混亂。有什麼建議?謝謝。
#include <stdio.h>
char* itob(int n, char s[100], int b);
char reverse(char s[100],char i);
int main(void)
{
int n,b,c=0;
char* str;
char s[100];
...
str=itob(n,s,b);
printf("%s",str); //wrong
main();
}
char* itob(int n, char s[100], int b)
{
int i=100,c,firstdig,a;
char str[100];
if(b==8)
printf("0");
else if(b==16)
printf("0x");
do
{
c=n%b;
if(c>9)
s[i--]=c-10+'A';
else
s[i--]=c+'0';
} while((n/=b)>0);
a=0;
c=i+1;
while(c!=101)
{
str[a]=s[c];
a++;
c++;
}
str[a]='\0';
return str;
}
請問您可以顯示'itob()'的內容嗎? 「搞砸」涉及什麼?你看到字符串的一部分,然後是垃圾還是全是垃圾?你NULL是否終止你的字符串? – Jimbo
此外,你似乎遞歸調用'main()'?是對的嗎? – Jimbo
不,調用'main()'遞歸是一個畸變,它甚至在C++中被禁止。 – Mathuin