【问题标题】:Scan and print strings扫描和打印字符串
【发布时间】:2016-10-27 19:42:10
【问题描述】:

第一个代码扫描三个字符串,然后再次打印出这些字符串。第一个代码工作正常并打印出字符串,如第一个图像链接中所示。

在第二个代码中,字符串的数量必须是可变的。因此我扫描一个整数 k,并将这个整数放入 for 循环中。我希望当我扫描 2 时这会产生相同的结果,但它没有相同的效果。相反,它只扫描 2 个字符串,并在打印出字符串之前打印出一些符号,如第二个图像链接中所示。有人对此有解释吗?

#include <stdio.h>
#include <stdlib.h>
#define maxstring 100
#define maxc 10

int main()
{
char c, text[maxc][maxstring];
int i, j, n, k;

for(j=0; j<=2; j++)
{
    for(i=0; (c=getchar())!='\n'; i++)
    {
        text[j][i]=c;
    }
}
n=i;
    for(j=0; j<=2; j++)
{
    for(i=0; i<n; i++)
    {
        putchar(text[j][i]);
    }


}

   return 0;
}

第二个代码:

#include <stdio.h>
#include <stdlib.h>
#define maxstring 100
#define maxc 10

int main()
{
char c, text[maxc][maxstring];
int i, j, n, k;

printf("Enter amount of strings:");
scanf("%d", &k);

for(j=0; j<=k; j++)
{
    for(i=0; (c=getchar())!='\n'; i++)
    {
        text[j][i]=c;
    }
}
n=i;
    for(j=0; j<=k; j++)
{
    for(i=0; i<n; i++)
    {
        putchar(text[j][i]);
    }


}

   return 0;
 }

【问题讨论】:

  • c 必须是 int
  • 第二个代码的输出,位于第一个代码上方的图像链接中。第一个代码的输出图像链接在第二个代码下。对不起..

标签: c string multidimensional-array


【解决方案1】:

第二个程序从输入k 读取换行符作为第一个字符串的开头,将其解释为空字符串。因为您没有初始化 text,并假设所有字符串的长度相同,所以会打印垃圾。

此外,您的循环将读取k+1 字符串;不确定这是否是您想要的。

【讨论】:

    【解决方案2】:

    好吧,我知道第一个代码查看第一个字符串的长度(如第二个代码),并假设其他字符串具有相同的长度。但是,当我扫描第二个代码中的字符串(k)数量时,为什么会得到不同的结果?我希望 k 只决定代码扫描的字符串数量。

    【讨论】:

    • 这绝不是一个答案。
    猜你喜欢
    • 2015-06-20
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    相关资源
    最近更新 更多