這是我第一次發佈在這裏:) 我試過在這裏搜索,但未能找到我的具體問題的答案。 我很新的C,主要是用C#到現在爲止, 所以整個指針的想法是不是我的一塊蛋糕..字符*通過函數打印什麼都沒有
我試圖創建它變成一個字符串的整數的函數, 我succeded直到返回值的部分。 我不明白爲什麼在函數結束時,字符串正在正確打印,但主函數不是這種情況。如果有人可以看一下代碼並向我解釋爲什麼它不起作用(爲什麼它在主函數中什麼都不打印),這將不勝感激。
主要功能:
int main()
{
printf("%s", int_to_string(4058));
return 0;
};
詮釋爲String功能:
char* int_to_string(int n)
{
int len = int_length(n);
char str[len];
int count = 1;
while (n != 0)
{
char c = (n % 10) + '0';
str[len - count] = c;
count++;
n /= 10;
}
char* s = str;
printf(s); // Works perfectly, prints the number as a string of characters
return s;
};
分Func鍵 - 詮釋長度功能:
int int_length(int s)
{
int count = 0;
while(s != 0)
{
count++;
s /= 10;
}
return count;
};
你的幫助將真正的讚賞!
你欺騙了編譯器,但是你沒有解決這個問題(*'return str;'沒有警告*不能工作)。請閱讀關於堆棧和局部變量。對此有很多重複的內容。 –
''我試過在這裏搜索,但未能找到我的具體問題的答案。' - 這是非常頻繁地發佈。返回並使用指向本地變量的指針是UB。 –
'char str [len];' - >'static char str [32];'並將NUL字符設置爲字符串結尾。 – BLUEPIXY