我正在扫描字符串作为输入,我正在使用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 = fgetc(&lajna);


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

最佳答案

请参见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];
}

关于c - 从缓冲区读取字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34955943/

10-11 19:28