c - 如何输入多个字符串后跟换行符

标签 c string

该程序询问用户要输入多少个字符串,然后它获取所有字符串并存储它。每个字符串后跟换行符,表示正在输入新字符串。

#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/

相关文章:

c++ - OpenMP:局部变量是否自动私有(private)?

c - 在 C 中设置最后 n 位

谁能解释一下这个scanf代码的含义

java - Android Build Strings 让我抓狂

java - java中的长二进制字符串算术

c - 字符数组开头出现意外字符

c - 多线程 (C) 程序线程不终止

c - 预处理器不同的函数名称相同的功能

string - Drupal8 Twig - 将字符串转换为整数

c - 将一个字符数组分配给另一个字符数组会产生错误。为什么?