【问题标题】: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 上找不到合适的答案。
【问题讨论】:
标签:
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]);
}