21xrx.com
2024-11-05 14:45:44 Tuesday
登录
文章检索 我的文章 写文章
如何在C语言中输入字符串数组
2023-06-15 11:34:37 深夜i     --     --
字符串数组 输入 C语言

在C语言中,输入字符串数组是比较常见的操作。本文将介绍如何通过几种不同的方法输入一个字符串数组。

方法一:使用scanf函数

scanf函数可以用来读取用户输入,其中%s参数可以读取一个字符串。如果我们想要读取多个字符串并将它们存储到一个数组中,可以使用循环和数组索引。下面是一个示例代码:


#include

int main() {

  char strings[10][20]; // 定义一个10个元素,每个元素最多存储19个字符的字符串数组

  int i;

  

  for (i = 0; i < 10; i++) {

    printf("请输入第%d个字符串:", i+1);

    scanf("%s", strings[i]); // 将用户输入存储到数组中

  }

  

  // 输出整个字符串数组

  printf("你输入的字符串是:\n");

  for (i = 0; i < 10; i++) {

    printf("%s\n", strings[i]);

  }

  

  return 0;

}

上述程序主要通过循环和scanf函数读取用户输入的字符串,并将它们存储到一个字符串数组中,最后再通过循环输出整个字符串数组。

方法二:使用fgets函数

fgets函数可以用来读取一行数据,它的使用方式如下:


fgets(char *str, int n, FILE *stream);

其中str表示存储读入数据的数组,n指定最大读取字符数,stream指定读取数据的文件流。在本例中,我们可以从标准输入流stdin中读取数据,示例代码如下:


#include

#include

#include

int main() {

  char strings[10][20]; // 定义一个10个元素,每个元素最多存储19个字符的字符串数组

  int i;

  char *pos;

  

  for (i = 0; i < 10; i++) {

    printf("请输入第%d个字符串:", i+1);

    fgets(strings[i], 20, stdin); // 从标准输入流中读取数据

    pos = strchr(strings[i], '\n'); // 查找字符串中的换行符

    if (pos != NULL) {

      *pos = '\0'; // 将字符串中的换行符替换为字符串结束符

    } else {

      // 如果没有找到换行符,说明用户输入的字符串超过了所定义的最大长度

      // 此时我们需要清除stdin缓存区中的数据并退出程序

      fflush(stdin);

      printf("你输入的字符串长度超过了限制,请重新输入!\n");

      exit(-1);

    }

  }

  

  // 输出整个字符串数组

  printf("你输入的字符串是:\n");

  for (i = 0; i < 10; i++) {

    printf("%s\n", strings[i]);

  }

  

  return 0;

}

上述程序主要是通过fgets函数读取一行数据,然后在字符串结尾处添加字符串结束符并存储到一个字符串数组中,再通过循环输出整个字符串数组。需要注意的是,如果用户输入的字符串超过了所定义的最大长度,我们需要清除stdin缓存区中的数据并退出程序。

方法三:使用gets函数

gets函数与fgets函数类似,但是它不需要指定字符数的上限,因此在实际使用中可能比较方便。需要注意的是,gets函数存在缓冲区溢出的风险,因此我们需要控制用户输入的字符串长度,以防止程序崩溃。下面是一个示例代码:


#include

#include

#define MAX_LENGTH 20 // 定义允许输入的字符串最大长度为20

int main() {

  char strings[10][MAX_LENGTH+1]; // 定义一个10个元素,每个元素最多存储MAX_LENGTH个字符的字符串数组

  int i;

  

  for (i = 0; i < 10; i++) {

    printf("请输入第%d个字符串:", i+1);

    gets(strings[i]); // 从标准输入流中读取数据

    if (strlen(strings[i]) > MAX_LENGTH) {

      printf("你输入的字符串长度超过了限制,请重新输入!\n");

      i--; // 如果用户输入的字符串长度超过了限制,不计入数组

    }

  }

  

  // 输出整个字符串数组

  printf("你输入的字符串是:\n");

  for (i = 0; i < 10; i++) {

    printf("%s\n", strings[i]);

  }

  

  return 0;

}

上述程序主要是通过gets函数读取用户输入的字符串,然后判断其长度是否超过所定义的最大长度,如果超过了限制,则提示用户重新输入,不计入数组,如果没有超过限制,则存储到一个字符串数组中并输出整个字符串数组。需要注意的是,在实际使用中,我们需要合理控制用户输入的字符串长度,以避免程序崩溃。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复