-1

入力として文字列をスキャンしています。たとえば、getline を使用しています。

char *lajna=NULL;
size_t dlzka=0;
getline(&lajna,&dlzka,stdin);

そして、 fgetc を使用して最初の文字を読み取りたい 、私はやろうとしました

test=fgetc(lajna);

しかし、それはエラーをスローします

'char**' を 'FILE* {aka _IO_FILE*}' に変換できません。引数 '1' は 'int fgetc(FILE*)' に変換されます。

私はそれをチェックしましたが、このようにバッファから文字を読み取る方法は何も見つかりませんでした。正しい方法は何ですか?

4

1 に答える 1

2

のプロトタイプを参照してくださいfgetc():

   int fgetc(FILE *stream);

引数としてaを取りFILE*ますが、 を渡していますchar*。したがって、エラー。(エラーメッセージは、実際には次のようになっていることを示唆していますtest=fgetc(&lajna);:)

から文字を読み取るlajnaために、関数や特別なメカニズムを使用する必要はありません。単純にインデックスを付けることができます:

char ch = lajna[0]; // first char 

等々。

または、ループを使用してすべての文字を読み取ることができます。

for(i=0; lajna[i]; i++) {  //until the null terminator '\0'
   char ch = lajna[i];
}
于 2016-01-22T21:09:02.190 に答える