标签: getc

什么等同于Linux中的getch()和getche()?

我无法在Linux中找到conio.h的等效头文件.

在Linux中有getch()&getche()function功能吗?

我想制作一个开关盒基本菜单,用户只需按一个键即可提供选项,并且应该向前移动过程.按下他的选择后,我不想让用户按ENTER键.

c linux getch getchar getc

57
推荐指数
4
解决办法
11万
查看次数

getc()vs fgetc() - 主要区别是什么?

在任何地方我都看到"它实际上是相同的"或类似的东西......

来自GNU C编程教程:

GNU C库中还有另一个名为fgetc的函数.它在大多数方面与getc相同,除了getc通常作为宏函数实现并且高度优化,因此在大多数情况下是优选的.(在您从标准输入读取的情况下,getc与fgetc一样快,因为与计算机读取输入的速度相比,人类输入速度较慢,但​​是当您从不是由人工交互生成的流中读取时, fgetc可能更好.)

还有什么区别?我听说他们每个都有不同的实现(一个可以用作宏),但是,是什么让它们与标准C库(或规范)中的它们完全不同(或不同)?

c getc fgetc

45
推荐指数
2
解决办法
4万
查看次数

getc Vs getchar Vs Scanf用于从stdin读取字符

以下三个功能:

getc getchar&scanf

从stdin读取角色的最佳选择是什么?为什么?

这些功能中是否存在任何已知的缺点或限制,这使得一个功能优于另一个功能?

c scanf character getchar getc

23
推荐指数
2
解决办法
3万
查看次数

使用getc从控制台读取\ r(回车)vs \n(换行符)?

我正在写一个基本上等待用户点击"输入"然后做某事的功能.我发现在测试时有效的方法如下:

#include <stdio.h>

int main()
{
        int x = getc(stdin);
        if (x == '\n') {
                printf("carriage return");
                printf("\n");
        }
        else {
                printf("missed it");
                printf("\n");
        }
}
Run Code Online (Sandbox Code Playgroud)

我的问题,以及我最初尝试过的是:if (x == '\r')但是在测试中,该程序没有让我碰到输入.这'\n'似乎对应于我从控制台进入输入.有人可以解释这个区别吗?另外,要验证,写它if... == "\n"是否意味着字符串文字?即用户真的必须"\n"从控制台进入,对吗?

c console newline getc

23
推荐指数
2
解决办法
7万
查看次数

Perl6:getc处于原始模式

我正在使用Perl 6模块Term :: termios.

#!/usr/bin/env perl6
use v6;
use Term::termios;

my $saved_termios := Term::termios.new(fd => 1).getattr;
my $termios := Term::termios.new(fd => 1).getattr;
$termios.makeraw;
$termios.setattr(:DRAIN);

loop {
   my $c = $*IN.getc;
   print "got: " ~ $c.ord ~ "\r\n";
   last if $c eq 'q';
}

$saved_termios.setattr(:DRAIN);
Run Code Online (Sandbox Code Playgroud)

当我运行此脚本,按键up-arrow,down-arrow,right-arrow,left-arrowq这是输出:

#after arrow-up:
got: 27
got: 91

#after arrow-down:
got: 65
got: 27
got: 91

#after arrow-right:
got: 66
got: 27
got: 91

#after …
Run Code Online (Sandbox Code Playgroud)

terminal perl perl6 getc

7
推荐指数
1
解决办法
260
查看次数

K&R的getc和putc实现是对的吗?

在K&R第8章中,它具有putc和getc函数的自定义实现.在getc的第一个定义中,如果参数是stdin,根据_iob的定义,函数将尝试写入地址0,因为这是_iob [0] .ptr和_iob [0] .base的值.分配.这合法吗?

代码:http://ideone.com/AIkCA

_iob的定义:

FILE _iob[20] = {
 {0, (char *) 0, (char *) 0, _READ, 0},
 {0, (char *) 0, (char *) 0, _WRITE, 0},
 {0, (char *) 0, (char *) 0, _WRITE, 0}
};
Run Code Online (Sandbox Code Playgroud)

c getc

5
推荐指数
1
解决办法
1197
查看次数

为什么rewind()在这个简单的程序中没有按预期工作?

为什么以下程序没有按预期打印新创建的文本文件("E")的第一个字符?这是一个简单的程序,我试图从各个方面看问题,但找不到原因.文本文件正在我的D盘上创建,内容为" EFGHI ",但由于某种原因,即使我使用倒带和读取并且输出为-1,也不会读取"E".getc()

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int x;
    FILE *fp;
    fp=fopen("F:\\demo.txt","w");
    if(fp==NULL)
        puts("Write error");
    fputs("EFGHI",fp);
    rewind(fp);

    x=getc(fp);
    printf("%d",x);
    fclose(fp);
}
Run Code Online (Sandbox Code Playgroud)

更新:

    #include<stdio.h>
    #include<stdlib.h>

    int main()
    {
        int x;
        FILE *fp;
        fp=fopen("F:\\demo.txt","w+");
        if(fp==NULL)
        {
            puts("Write error");
            exit(EXIT_SUCCESS);
        }
        fputs("EFGHI",fp);
        rewind(fp);

        while(!feof(fp))
        {
            x=getc(fp);
            printf("%d\n",x);
        }
        fclose(fp);
     }
Run Code Online (Sandbox Code Playgroud)

c filestream text-files getc rewind

4
推荐指数
1
解决办法
1128
查看次数

Ruby STDIN.getc在接收时不读取char

似乎Ruby IO#getc在返回字符之前等到接收到\n.

如果您尝试运行此脚本:

STDOUT.sync = true
STDIN.sync = true
while data = STDIN.getc
  STDOUT.puts "Char arrived"
end
Run Code Online (Sandbox Code Playgroud)

每个发送到stdin的char都会返回一个"Char arrival",但只有在发送了\n之后才会返回.

即使我写STDIN.sync = true,似乎所有char都被缓冲.

在将字符发送到STDIN之后,有没有人知道如何使脚本打印"Char到达"?

ruby stdin getc

3
推荐指数
1
解决办法
2802
查看次数

fgetc总是返回值1

有以下功能:

void readAndPrint(FILE * f) {
    int c;

    while(c = fgetc(f) != EOF) {
        printf("%d", c);
    }
}
Run Code Online (Sandbox Code Playgroud)

在main()体中我使用以下代码来使用上面的函数:

FILE * pFile;

pFile=fopen ("myfile.txt","r");

readAndPrint(pFile)
Run Code Online (Sandbox Code Playgroud)

;

无论我放入myfile.txt,程序都打印出来.例如,对于abc,打印出111.

我知道函数中的c应该声明为int以正确地将它与EOF进行比较.另外,我希望打印出来自文本文件中每个字符的ASCII集的int代码(97表示a,...).我无法弄清楚为什么它会打印出"那些"...你知道原因吗?先感谢您.

c printf eof getc fgetc

3
推荐指数
1
解决办法
1998
查看次数

如何确保我将使用 C 标准库函数(如“getc”)的函数版本而不是类似函数的宏版本?

我正在学习 C 中的函数与类函数宏。

在阅读 C 标准时,我发现了这一点:

通过将函数名称括在括号中,可以在本地抑制函数的任何宏定义,因为该名称后面不会跟着指示宏函数名称扩展的左括号。出于相同的语法原因,允许获取库函数的地址,即使它也被定义为宏。185)使用#undef删除任何宏定义也将确保引用实际函数。

因此,根据此,如果我想确保 get 将是我的代码中的函数,我必须访问头<stdio.h>文件并将(我不知道是函数名称还是宏名称)括在括号或#undef宏中?

我的意思是这个:(int (getc)(FILE *stream);或者这个?#define (getc)(...) ) 或者这个: #undef getc

但这一切都在<stdio.h>文件里吗?

或者在我的代码里面?

你能给我一个关于如何确保getc在 C 中使用 as 函数的例子吗?

c macros function stdio getc

3
推荐指数
1
解决办法
102
查看次数

标签 统计

getc ×10

c ×8

fgetc ×2

getchar ×2

character ×1

console ×1

eof ×1

filestream ×1

function ×1

getch ×1

linux ×1

macros ×1

newline ×1

perl ×1

perl6 ×1

printf ×1

rewind ×1

ruby ×1

scanf ×1

stdin ×1

stdio ×1

terminal ×1

text-files ×1