c - 从缓冲区读取字符

标签 c fgetc getc

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

相关文章:

c - 让 fgetc 工作时遇到问题

c - ftell 返回不正确的值

c - x86 汇编指令执行计数

c - 生成查找表的所有可能的二进制输入

c程序for循环: execution sequence

c - 那么nginx是如何改变进程标题的呢?

C fgetc 同时用作同一函数的参数时的奇怪行为

c - C 中 fgetc() 函数的行为

c - C中不同输出内容的文件复制

c - 我怎样才能在某些情况下在 C 中使用 getch()?