怎么解决getchar(吞字符的问题)

img


想问一下各位,C语言编程文件中怎么解决getchar()吞首个字符的问题?

你while循环上面 ch = getchar(); 去掉

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7515419
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C语言中getchar() 的作用
  • 除此之外, 这篇博客: 【C】C语言中getchar()的使用中的 C语言中getchar的使用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 以下回答由chatgpt基于相关博客总结生成:

    可以通过添加一个额外的getchar()函数来解决getchar()函数吞没第一个字符的问题,即先读取并忽略第一个字符。例如:

    char c; c = getchar(); // 读取并忽略第一个字符 c = getchar(); // 读取第二个字符开始输入的字符

    如果输入中包含空格或其他空白字符,可以使用getchar()结合循环读取输入的所有字符,并存储到一个字符数组中。例如:

    char str[20] = {0}; char c; int i = 0; while ((c = getchar()) != '\n' && i < 19) { // 将输入存储到字符数组中 str[i++] = c; } str[i] = '\0'; // 添加字符串结束符

    可以使用fgets()函数来代替getchar()函数读取字符串,从而更方便地读取整行输入。例如:

    char str[20]; fgets(str, 20, stdin); // 读取最多20个字符到str数组中,包括换行符

    需要注意的是,fgets()函数会读取输入中的换行符并存储在字符串中。如果需要去除换行符,可以使用strtok()函数或手动替换换行符。例如:

    char str[20]; fgets(str, 20, stdin); str[strcspn(str, "\n")] = '\0'; // 用字符'\0'替换换行符

    其中strcspn()函数可以获取字符串中第一个匹配指定字符集的位置,从而定位到换行符的位置。然后在该位置上替换为'\0'即可去除换行符。

供参考:

img