【问题标题】:Handle character arrays that include spaces处理包含空格的字符数组
【发布时间】:2015-05-13 21:40:24
【问题描述】:

我正在开发一个程序,让您输入您的姓名,然后该程序将其放入一个正方形中。例如,对于输入 "Zyad",我希望输出:

 ********
|        |
|  Zyad  |
|        |
 ********

现在我希望能够输入两个姓名(例如名字和姓氏)并获得相同类型的输出。

"Zyad Sabry" 的输入会产生

 **************
|              |
|  Zyad Sabry  |
|              |
 **************

我的代码:

scanf("%s",name);
n = strlen(name);
printf(" ");

for(i=0;i<n+4;i++)
    printf("*");
    printf("\n");
    printf("|");

    for(i=0;i<n+4;i++)
        printf(" ");
        printf("|");

    printf("\n");
    printf("|");

    for(i=0;i<(n+4)-n-2;i++)
        printf(" ");
        printf("%s  |");

    printf("\n");
    printf("|");

    for(i=0;i<n+4;i++)
        printf(" ");
        printf("|");

    printf("\n");
    printf(" ");

    for(i=0;i<n+4;i++)
        printf("*");

【问题讨论】:

  • 看不懂是什么意思?
  • 你的问题根本没有表现出努力。您应该显示一些您尝试过但不起作用的代码。
  • 您使用单个名称处理的程序可能只需对两个名称稍作修改即可工作。只需在此处显示您的代码,我们就能告诉您。
  • char name[64]; scanf("%63[^\n]", name);
  • 对不起,忘记粘贴代码@JoëlHecht 注意:现在发布:D

标签: c arrays io char spaces


【解决方案1】:

当你有如下字符数组时

char name[500];

您可以输入一个包含除\n之外的任何字符的字符串,如下所示

int i;
for(i=0;(name[i]=getchar())!='\n';i++);
name[i]='\0';  //null termination

假设数组的长度足够存储名字。

【讨论】:

    猜你喜欢
    • 2016-02-28
    • 2014-12-25
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多