gpt4 book ai didi

c - 程序在每次输入后打印一个值为 10 的额外行

转载 作者:行者123 更新时间:2023-12-02 08:38:29 24 4
gpt4 key购买 nike

我有这个简单的程序:

#include <stdio.h>

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

return 1;
}

但是由于某种原因,在执行时我最后得到了一个额外的值 10:

a
97 a
10

b
98 b
10

abc
97 a
98 b
99 c
10

值 10 是多少,它从何而来?如何阻止它发生?

解决方法:

#include <stdio.h>
#include <ctype.h>

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

return 1;
}

最佳答案

就是你输入的换行符。它的 ASCII 值是 10。

这里有三种“停止”它的方法:

  1. 在循环中添加一个 if 检查来检查它,并且仅当它不是换行符时才打印。

  2. 使用 fgets 一次读取一个完整的行,从字符串中删除换行符(fgets 添加它)并循环遍历字符串并打印每个性格。

  3. 使用scanf 读取一个字符。如果格式中有前导空格,它将像换行符一样跳过空格。

第一种方法也可用于检查不可打印的字符(参见 isprint ),如果您想对其他类别的字符进行特殊打印(参见这些 character classification 函数)。

关于c - 程序在每次输入后打印一个值为 10 的额外行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18895103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com