从缓冲区

时间:2016-01-22 21:05:15

标签: c fgetc getc

我正在扫描字符串作为输入,我使用getline这样做,例如

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

我想用fgetc读取第一个字符,我试着

test=fgetc(lajna);

但是它会抛出错误

  对于参数'1',

无法将'char **'转换为'FILE * {aka _IO_FILE *}'   'int fgetc(FILE *)'        ciarka =龟etc(安培; lajna);

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

1 个答案:

答案 0 :(得分:2)

查看fgetc()的原型:

   int fgetc(FILE *stream);

它需要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];
}