标签: getchar

为什么scanf会跳过字符串输入?

我试图将多个单词输入和多行输入到一个数组中.但某些地方代码跳过获取输入并跳过结束程序.我已经尝试在'%s'(或'%s')之前和之后添加空格但是它不起作用(也许是因为它在循环中?).非常感谢任何人的帮助!如果我输入两三个以上的单词,它也会开始变得怪异:(我的目标是找到特定字母在所有这些单词和行中出现的次数.

#include <stdio.h> //include standard library

int main(){
  int lineCount, occuranceCount;
  printf("How many lines are you going to enter?");
  scanf("%d", &lineCount);

  char input[lineCount][100], searchChar;

  for(int i=0; i<lineCount; i++){
    printf("Please enter line #%d (100 characters of less):",i+1);
    scanf("%s", &input[i]);
  }

  printf("What letter do you want to check the frequence in those lines? ");
  scanf("%c", &searchChar);

  for(int j=0; j<lineCount; j++){
    for(int k=0; k<100; k++){
      if(input[j][k] != '\0'){
        if(input[j][k]==searchChar)
          occuranceCount++;
      }
    }
  }

  printf("The letter occurs for %d time", occuranceCount);

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

c scanf char getchar

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

无法比较getchar!='/ n',得到警告:多字符字符常量

当我比较getchar()!='/ n'时,我收到警告:多字符字符常量.我为什么这么干?我在C中编码并使用gcc作为编译器.我认为getchar读取一个字符并将其转换为int本身.那么多字符字符常量的含义是什么?

c getchar

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

程序控制流程无法按预期工作

这是一个问题C.程序控制流程不符合预期.它要求输入字符,但没有要求输入字符x.

int foo();

int main(int argc, const char * argv[]) {

    foo();
    return 0;
}



int foo(){

    char in;
    char x;
    printf("Do you wanna party \n");


    if((in = getchar()) == 'y')
        printf("Go Sleep!, I was kidding\n");
    else
        printf("Oh! you are so boaring..\n");


    printf("\nOk, Another Question\n");
    printf("Wanna Go to Sleep\n");


    if((x = getchar()) == 'y')
        printf("ok lets go, Sleepy Head\n");
    else
        printf("No, lets go\n");


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

c getchar

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

getchar() 和 putchar() 宏如何?

根据我对 C 中宏的理解,它们是预定义的常量,将在整个程序中使用它们的常量值,所以我们继续定义它们以避免进一步的复杂性并使代码更具可读性,因此人们阅读它会明白什么应该保持不变,什么不是。

我在这里和那里读过(C 编程现代方法,KN King)我们可以将这两个函数定义为宏。

由于我对 C 有点陌生,我无法理解这两个如何定义为宏?

c putchar getchar c-preprocessor

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

为什么需要 int 类型来处理 EOF 和 getchar() 的返回?

正如书中所写——

问题在于区分输入的结尾和有效数据。解决方案是,当没有更多输入时,getchar 返回一个独特的值,该值不能与任何实际字符混淆。该值称为 EOF,即“文件结束”。我们必须将 c 声明为一个足够大的类型,以容纳 getchar 返回的任何值。我们不能使用 char,因为除了任何可能的 char 之外,c 还必须足够大才能容纳 EOF。因此我们使用 int。

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

我无法理解使用 int 而不是 char 的实际原因。EOF 将返回无法存储在 char 中的内容。

c getchar

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

标签 统计

c ×5

getchar ×5

c-preprocessor ×1

char ×1

putchar ×1

scanf ×1