【问题标题】:user input of name using getchar() then diplaying the name. (c code)用户使用 getchar() 输入名称,然后显示名称。 (c 代码)
【发布时间】:2022-01-18 04:20:41
【问题描述】:

提示我编码的内容:

使用getchar()函数提示用户输入他/她的名字,然后在屏幕上打印输入的名字。

我编码的内容:

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

int main() {
    int c;                
    int i;
    char arr[20]={0};
    c = getchar();
    i = 0;
    for(i;i<20;i++)
    {
        arr[i]=c;
        c=getchar();
    }
   
    for (int j=0;j<20;j++)
    {
        printf("%s",arr[j]);
    }
}

我的结果根本无法正常工作,并且存在各种类型的问题。例如,如果用户已经输入了全名,我不知道如何停止循环。相反,我必须一直按 Enter 直到 EOF。另一个问题是名称不再打印在屏幕上。我相信我的想法的基础是错误的代码。谁能指出我正确的方向?

【问题讨论】:

  • for(i;i&lt;20;i++) 当然它会一直读下去,因为你无条件地尝试读 20 个字符。如果您确实想在该输入上停止,请检查换行符。
  • @kaylum 你介意详细说明一下吗?我想在 for 循环中写“if(c=='\n') {break;}”,但是没有成功。
  • while( (c = getchar()) != EOF &amp;&amp; c != '\n' &amp;&amp; i &lt; 20 )
  • @WilliamPursell 这是我得到的结果“(null)(null)(null)(null)(null)(null)(null)(null)...... 。”
  • printf("%s",arr[j]); -> printf("%c",arr[j]);

标签: c for-loop getchar


【解决方案1】:

试试这个:

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

int main()
{
    int i;
    char arr[21], c;
    for(i = 0; (c = getchar()) != '\n' && c != EOF && i < 20; i++)
    {
        arr[i] = c;
    }
    arr[i] = '\0';

    printf("\n%s", arr);
}

运行,输入您的短语并按回车

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多