【问题标题】:how to store and then print a 2d character/string array?如何存储然后打印二维字符/字符串数组?
【发布时间】:2013-08-07 16:25:26
【问题描述】:

假设我有这些词:老虎、狮子、长颈鹿。

如何使用for 循环和scanf 将其存储在二维char 数组中,然后使用for 循环逐个打印单词?

有点像

for(i=0;i<W;i++)
{
    scanf("%s",str[i][0]);  //to input the string
}

PS 很抱歉问了这么一个基本问题,但我在 Google 上找不到合适的答案。

【问题讨论】:

  • str 是如何声明的?
  • 我感觉到缓冲区溢出 ;)

标签: c arrays string character


【解决方案1】:
#include<stdio.h>
int main()
{
  char str[6][10] ;
  int  i , j ;
  for(i = 0 ; i < 6 ; i++)
  {
    // Given the str length should be less than 10
    // to also store the null terminator
    scanf("%s",str[i]) ;
  }
  printf("\n") ;
  for(i = 0 ; i < 6 ; i++)
  {
    printf("%s",str[i]) ;
    printf("\n") ;
  }
  return 0 ;
}

【讨论】:

  • 如果您解释了您的代码的确切作用,可能会更有用。
【解决方案2】:

你可以这样做。

1)创建一个字符指针数组。

2)动态分配内存。

3)通过scanf获取数据。下面是一个简单的实现

#include<stdio.h>
#include<malloc.h>

int main()
{
    char *str[3];
    int i;
    int num;
    for(i=0;i<3;i++)
    {
       printf("\n No of charecters in the word : ");
       scanf("%d",&num);
       str[i]=(char *)malloc((num+1)*sizeof(char));
       scanf("%s",str[i]);
    }
    for(i=0;i<3;i++)  //to print the same 
    {
      printf("\n %s",str[i]);    
    }
}

【讨论】:

    【解决方案3】:
    char * str[NumberOfWords];
    
    str[0] = malloc(sizeof(char) * lengthOfWord + 1); //Add 1 for null byte;
    memcpy(str[0], "myliteral\0");
    //Initialize more;
    
    for(int i = 0; i < NumberOfWords; i++){
        scanf("%s", str[i]);
     } 
    

    【讨论】:

      【解决方案4】:

      首先你需要创建一个字符串数组。

      char arrayOfWords[NUMBER_OF_WORDS][MAX_SIZE_OF_WORD];
      

      然后,你需要将字符串输入到数组中

      int i;
      for (i=0; i<NUMBER_OF_WORDS; i++) {
          scanf ("%s" , arrayOfWords[i]);
      }
      

      终于可以打印出来了

      for (i=0; i<NUMBER_OF_WORDS; i++) {
          printf ("%s" , arrayOfWords[i]);
      }
      

      【讨论】:

      • 他没有问那些事。仔细阅读问题。
      猜你喜欢
      • 2016-02-15
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 2021-07-31
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      相关资源
      最近更新 更多