scanf()関数を使用して非常に多くの問題を抱えた後、文字列全体を読むための代替手段を探すことにしました。 \ nが見つかるまで)。私はここでstackoverflowのコードの興味深いビットにつまずいた。 このコードをより動的に変更したので、キーボードからのchar入力の後にmemmoryを割り当てたいと思っていました。私はそれが働くようになったが、引数としてはchar **a
しかありません。main()では、これをread(&w);
と呼びます。私の考えは、変数を宣言することなく使用できるように、引数のない関数を作成することです。char *w
私が文字列を読む必要があるたびに。事前scanf()の代替方法を作成するには
char *read2() {
int i = 0;
char **a = NULL;
while (1) {
*a = (char *)realloc(*a, (i + 1) * sizeof(char)) // Error here
scanf("%c", &(*(*a + i)));
if (*(*a + i) == '\n') { break; }
else { i++; }
}
*(*a + i) = '\0';
return *a;}
ありがとう:アクセス違反エラーを読む/
char *read(char **a) {
int i = 0;
while (1) {
*a = (char *)realloc(*a, (i + 1) * sizeof(char));
scanf("%c", &(*(*a + i)));
if (*(*a+i) == '\n')
break;
else
i++;
}
*(*a+i) = '\0';
return *a;}
は、今私は、引数を取りませんし、この機能を変更しようとしているが、私は、書き込みを取得しています:ここで私が得たコードです
正確には、あなたの質問は何ですか? –
POSIXには、あなたが望むことをする 'getline()'関数があります。それを使用できますか? – Barmar
'fgets'や' getline'の1000thバージョンを再発明しようとしていますか? 'read'という名前は非常に悪い考えです。なぜなら、これはあなたのプラットフォームのシステムライブラリによって既に定義されているからです。 – Olaf