#include <stdio.h>
char* getString()
{
char buffer;
int size = 0;
int capacity = 1;
char* inputString = (char*)malloc(capacity*sizeof(char));
char* newString;
while(1)
{
buffer = getchar();
if(buffer == '\n')
break;
if((capacity-1) <= size)
{
capacity *= 2;
newString = (char*)malloc(capacity*sizeof(char));
int i;
for(i = 0; i < size; i++)
newString[i] = inputString[i];
inputString = newString;
free(newString);
}
inputString[size] = buffer;
size++;
}
inputString[size] = '\0';
return inputString;
}
int main()
{
char* str;
str = getString();
printf("%s", str);
}
我寫了這個C程序來獲取一個字符串作爲C中的用戶輸入並將其存儲在一個可動態調整大小的數組中。但是,每次運行此程序時,它都會崩潰。 我經歷了這個程序的類似實現,但不能準確找出我的代碼有什麼問題爲什麼我在C中寫的下面的getString()函數不起作用?
你使用調試器嗎?這是調試這些問題的方法(並且作爲最後的手段在Stackoverflow上發佈)。 – kaylum
'* buffer = getchar();'查看你的代碼來回答:'buffer'指向哪裏?試試'char buffer = getchar();' – kaylum
@kalyum試過了,仍然沒有用 – Sahil