我正在扫描字符串作为输入,我使用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);
我检查了一下,没有发现如何从这样的缓冲区读取字符,这是正确的方法吗?
答案 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];
}