#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