该程序询问用户要输入多少个字符串,然后它获取所有字符串并存储它。每个字符串后跟换行符,表示正在输入新字符串。
#include<stdio.h>
int main()
{
int n,i;
char str[20];
scanf("%d",&n); //how many string
//input each string
for(i=0;i<n;i++)
{
scanf("%s",&str[i]);
}
//display each string
for(i=0;i<n;i++)
{
printf("%s",str[i]);
}
return 0;
}
我面临两个问题 首先,每当我在输入字符串程序崩溃后在 devc++ 中编译和运行它时 其次我只想知道我在上面做的是对的吗?
最佳答案
你想要的是一个二维字符数组,它实际上是一个字符串数组:
#include<stdio.h>
int main()
{
int n,i;
char str[20][20]; // Can store 20 strings, each of length 20
scanf("%d",&n); //how many string
//input each string
for(i=0;i<n;i++)
{
scanf("%s",str[i]);
}
//display each string
for(i=0;i<n;i++)
{
printf("%s",str[i]);
printf("\n");
}
return 0;
}
上面的代码运行良好。我对您的原始代码所做的更改是:
- 将 str 声明为二维字符数组,如前所述,它实际上是一个字符串数组。
- 删除了 str[i] 之前的 &。 scanf读入字符串时不需要&
- 在打印每个字符串后添加一个换行符,使其看起来更像输入代码
关于c - 如何输入多个字符串后跟换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22906049/