标签: getchar

while(getchar()!=多个参数)

如何使用getchar作为while循环的条件,并在(c = getchar())= EOF或'\n'或'\ 0'时终止它.

我试过了:

int c=0;
while((c=getchar()) != EOF || '\n' || '\0'){
putchar();
}
Run Code Online (Sandbox Code Playgroud)

哪个不起作用,如果我进入:天气(+输入).它没有终止循环.

我怎样才能做到这一点?

恩赐我

c while-loop getchar

0
推荐指数
1
解决办法
1538
查看次数

无法在C中使用getchar()和指针表示法获取用户输入

我正在将程序从正常数组表示法更改为纯指针表示法,并且我无法在while循环中使用getchar()接收用户输入.我打印出来的是程序正在接收并输出颠倒的问号.我不确定为什么会这样,因为我从未改变变量类型.问题在于接收用户输入的第二个功能.感谢您的帮助.

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

/* Function prototypes */
void fillS1(char * x);

void fillS2(char * x, char * y, char z);

void strFilter(char * a, char * b, char c);

int main(int argc, const char * argv[])
  {
    char s1[42];
    char s2[22];
    char x = 0;

    fillS2(s2, s1, x);

    return 0;
}

/* Function to generate a random string of 40 uppercase letters */
void fillS1(char randomlyGeneratedString[])
{
char * pointerToRandom = randomlyGeneratedString;
int i;

for (i = 0; …
Run Code Online (Sandbox Code Playgroud)

c pointers notation getchar

0
推荐指数
1
解决办法
1223
查看次数

为什么 getchar() 被跳过?

这是我下面的代码,我正在处理。输出是这样的:

Enter Nums: 20 4
OP: Which option was that?
Run Code Online (Sandbox Code Playgroud)

op = getchar();部分被完全忽略了。为什么?
我正在使用 gcc 4.6.2 MinGW。


#include <stdio.h>
int add(int num1, int num2) {
    return num1 + num2;
}

int subs(int num1, int num2) {
    return num1 - num2;
}

int mul(int num1, int num2) {
    return num1 * num2;
}

float div(int num1, int num2) {
    return (float)num1 / num2;
}

int main(int argc, char* argv[]) {
    int num1, num2;
    char op;
    fprintf(stdout,"Enter Nums: ");
    scanf("%d …
Run Code Online (Sandbox Code Playgroud)

c io mingw getchar mingw32

0
推荐指数
1
解决办法
3265
查看次数

getchar()函数的奇怪行为

我正在尝试编写一个将数据存储在文本文件中的函数,使用fopen("filename","w")where"filename"是用户输入的字符串.我已选择通过该getchar()功能这样做,我需要一个计数器变量,每次击键都会增加.这是令人费解和困惑的地方.

   char *p;
   int count = 0; 
   p = (char*)malloc(32*sizeof(char));
   do 
   {
       *p = getchar();
       count++;
   }
   while(getchar() != '\n');
Run Code Online (Sandbox Code Playgroud)

直到输入3个字符,它只需按1次Enter键,计数器就准确到2个字符后,它跟随一个奇怪的模式.

--------------------Input------------------------Count--------------------
-------------------- t --------------------------  1  --------------------
-------------------- te -------------------------  2  --------------------
-------------------- tes  -----------------------  2  --------------------
-------------------- test ------------------------ 3 ---------------------
-------------------- test1 ----------------------- 3 ---------------------
-------------------- test12 ---------------------- 4 ---------------------
-------------------- test123 --------------------- 4 ---------------------
-------------------- test1234 -------------------- 5 ---------------------
Run Code Online (Sandbox Code Playgroud)

基本上,对于每2个额外的字符,计数增加1.

该功能如何在此上下文中工作,为什么需要2次击键?

c getchar

0
推荐指数
1
解决办法
116
查看次数

为什么getchar在输入一个字符后等待?

这是我的代码:

#include <stdio.h>

int main()
{
        char a = getchar();
        printf("char: %c", a);
}
Run Code Online (Sandbox Code Playgroud)

我正在编译这个gcc.

运行时,即使在控制台上输入一个字符后,程序也会等待输入.它不应该立即退出并打印角色吗?我在Ubuntu for Windows上运行它,如果这可以有所作为.

c input getchar

0
推荐指数
1
解决办法
87
查看次数

为什么 getchar() 函数在循环中工作不同?

#include <stdio.h>
int main()
{
    char c;

    while ((c=getchar()) != EOF)
        putchar(c);
}
Run Code Online (Sandbox Code Playgroud)

为什么当我输入诸如“omar”之类的文本时,将 char print“omar”放回去。它不应该重复打印“o”吗,因为 getchar 只会采用第一个字符。我知道我错了,可能是因为我不知道 getchar 或 putchar 到底是如何工作的,所以有人可以解释一下它们是如何工作的吗?另一个问题为什么 getchar 和 putchar 在没有 while 循环的情况下正常工作,但在 while 循环内行为有所不同。

c while-loop putchar getchar

0
推荐指数
1
解决办法
363
查看次数

在 C 中将 EOF 作为字符读取

我知道这可能听起来很愚蠢,但是我怎样才能退出这个循环呢?

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

int main(){
    char c;
    do {
        c = getchar();
        printf("%c", c);
    }while(c != EOF);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在读一本书并尝试做以下练习:“验证表达式 getchar() != EOF 是 0 或 1” 如果我读取存储在整数值中的 EOF 值,它将等于 -1 但如果我尝试将 -1 作为字符捕获,那就太傻了。据我了解 EOF 是一个未分配给任何其他 char 的值。

任何人都可以帮忙吗?

edit1:我知道 c 应该是一个 Integer ...我有意将其读为 char 。

编辑2:

int main(){
    int c;
    while((c = getchar()) != EOF)
    {
        printf("%d\n", c);
    }
    return 0;
}

Run Code Online (Sandbox Code Playgroud)

----->

int main(){
    int c;
    int i = 0;
    char str[2];
    while((c = getchar()) …
Run Code Online (Sandbox Code Playgroud)

c eof getchar

0
推荐指数
2
解决办法
634
查看次数

检查是否为(char =='\n')时出现分段错误

我一直在努力解决这个问题超过一个小时,我似乎无法找出为什么会出现这个错误.

int  inp, count;
char numBuff[21];

count = 0;
while((inp=getchar()) != EOF) { // get Value (last field)
    printf("input is '%c'\n", inp);
    if (inp == '\n') break;
    if (inp == ' ') {
        continue;
    }
    numBuff[count++] = inp;
    printf("go back through loop\n");
}
printf("Out!");
numBuff[count] = '\0';
Run Code Online (Sandbox Code Playgroud)

如果我输入1013,我会得到以下内容

input is '1'
go back through loop
input is '0'
go back through loop
input is '1'
go back through loop
input is '3'
go back through loop
input is '
' …
Run Code Online (Sandbox Code Playgroud)

c segmentation-fault getchar

-1
推荐指数
1
解决办法
282
查看次数

我的C字符和行数计划有什么问题?

我正在阅读Kernighan Ritchie并且有这个角色计数程序,所以我尝试了实施

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

int main()
{
char c;
int i;
c = getchar();
while (c != EOF)
    i= i + 1;
printf("%d",i);
}`
Run Code Online (Sandbox Code Playgroud)

当我编译并运行此代码时,在输入一些字符后,之后没有输出.没有打印数字,我无法弄清楚原因.代码看起来很好.我也试过使用scanf(),但同样的事情发生了.

下一个例子是计算输入中的行数,同样的问题也存在.

c while-loop getchar

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

是否可以添加getchar(); 相当于.o文件?

我刚才创建了一个简单的C程序.它是一个简单的命令行生成器,可以获取一些数字,打印结果并停止.我总是在编辑器的命令行环境中运行它,在程序运行后自动暂停,所以我省略了getchar()在最后添加一个.

我现在后悔这一点,因为我设法失去了源头.我现在所拥有的只是编译的.o和.exe文件,后者 - 当然 - 在打印输出后立即退出,因此它无法使用.它不是那么长,大约100行,但我想避免重写它.(另外,我甚至可能通过这种方式学到新东西.)

现在我对C语言有了非常基本的了解,并且在计算机程度x86汇编方面几乎为零(虽然我学会了8086组装微控制器的基础知识,但现在我认为它不会有用),所以我有点卡在这里.我可以添加getchar()像暂停函数到编译代码,或者有什么方法可以使.exe在退出之前停止,同时仍保持独立?

该程序将在Windows 10系统上运行.

c assembly x86-64 getchar pause

-1
推荐指数
1
解决办法
67
查看次数

标签 统计

c ×10

getchar ×10

while-loop ×3

assembly ×1

eof ×1

input ×1

io ×1

mingw ×1

mingw32 ×1

notation ×1

pause ×1

pointers ×1

putchar ×1

segmentation-fault ×1

x86-64 ×1