我正在扫描字符串作为输入,我正在使用 getline 来执行此操作,例如
char *lajna=NULL;
size_t dlzka=0;
getline(&lajna,&dlzka,stdin);
我想使用 fgetc 读取第一个字符,我尝试这样做
test=fgetc(lajna);
但它抛出错误
cannot convert ‘char**’ to ‘FILE* {aka _IO_FILE*}’ for argument ‘1’ to ‘int fgetc(FILE*)’ ciarka=fgetc(&lajna);
我查了一下,没有发现如何像这样从缓冲区读取字符,什么是正确的方法?
最佳答案
查看fgetc()
的原型(prototype):
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/