首页 > 解决方案 > 为什么数字 10 在每次迭代中都会输出,我该如何解决?

问题描述

我有一个 for 循环,我想从用户那里获取输入并打印相关的 ascii 值。但它只在第二次迭代中要求用户输入,然后是输出 10。我试图去掉换行符,但它仍然打印出 10。

#include <stdio.h>

int main(void){
int number;

printf("Enter the number:");
scanf("%i", &number);
for( ; number > 0; number--){
  char character;
  printf("Give a char: \n");
  scanf("%c", &character);
  printf("The associated ascii value is %i \n", character);
}
return 0;
}

标签: cloopscharascii

解决方案


也许更简单(虽然scanf()不推荐用于用户输入

    scanf(" %c", &character);
    //     ^                  skip otional leading whitespace

您的整个程序fgets()用于用户输入(以及我的缩进、间距、样式;抱歉)

#include <stdio.h>  // printf(), fgets()
#include <stdlib.h> // strtol()

int main(void) {
    int number;
    char buffer[100];                  // space enough
    printf("Enter the number:");
    fgets(buffer, sizeof buffer, stdin);
    number = strtol(buffer, 0, 10);    // error checking missing
    for (; number > 0; number--) {
        printf("Give a char: ");
        fgets(buffer, sizeof buffer, stdin); // reuse buffer, error checking missing
        if (buffer[0] != '\n') {
            printf("The associated ascii value of '%c' is %i.\n", *buffer, *buffer);
        }
    }
    return 0;
}

推荐阅读