-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*)' ciarka=fgetc(&lajna);

我查了一下,没有发现如何像这样从缓冲区中读取字符,正确的方法是什么?

4

1 回答 1

2

见原型fgetc()

   int fgetc(FILE *stream);

它需要一个FILE*as 参数,但您正在传递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 回答