我正在扫描字符串作为输入,我正在使用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/