2017-05-12 6 views
-2

私はこの関数を使用してgetLine()関数でユーザー入力(stdin)を読み込みます。この関数は、ユーザ入力を伴うchar *を返します。これはセグメントです:CでgetLine()を使用して標準入力を読み込もうとしていません

char * rline(void) 
{ 

char *line; 
size_t buff = 0; 
char * getLine(&line, &buff, stdin); 
return line; 

} 

ただし、実行時にこのエラーが表示され、コンパイルされません。

error: expected declaration specifiers or '...' before '&' token  

私は周りを見回したが、かなりなぜこれが起こっている、私の構文が正しいか、それは論理的な誤りであることは理解できませんか?

+0

ちょうどC言語の関数の使い方を読んでください:https://www.programiz.com/c-programming/c-functions – Abend

+0

@Abendありがとうございますが、私は関数を呼び出すことに慣れています。これを呼びますか? –

+0

@DavidBowling私はPOSIXを使用していませんが、ありがとうございます。私はgetl​​ine()とgetLine()の両方を試みましたが、どちらも同じエラーを返します:未定義の参照。 –

答えて

0

あなたはその関数を間違って呼び出しています。 char *は関数呼び出しの前に何もしません。関数の宣言でのみ必要です。適切な関数宣言の

例:適切な関数呼び出しの

char * getLine(char *, int, int); 

例:

getLine(&line, &buff, stdin); 

ところで、私は値を設定することで、バッファのサイズは、あなたが選んだことだと思い2番目のパラメータに設定します。

+0

ありがとう、しかし、私は私のヘッダー(と私はしない場合)に関数を宣言し、それを呼び出すしようとすると、私に "getLine()"未定義の参照を与えるなぜ、そうですか? –

+0

@JohnStawket 'getLine'という標準機能はありません –

+0

@ErikWありませんか? [これはに含まれているgetline(3)のmanページです(https://linux.die.net/man/3/getline)。私はgetl​​ine()とgetLine()の両方を試しましたが、両方とも同じエラーを出します:未定義の参照。 –

関連する問題