C语言如何读入二维字符串

如何将多行字符串读入到一个二维数组中?

可以使用字符数组来表示缓冲区,比如下面的代码:


#include <stdio.h>
int main()
{
char str[2][256] = {0};
scanf("%s", str[0]);
scanf("%s", str[1]);
printf("%s\n%s\n", str[0], str[1]);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-23

用fgets。其实也可以用gets,但是fgets可控读取字符串的长度,避免字符串太长溢出你分配的数组空间。


#include <stdio.h>

int main(void) {
  char str[24][80];
  int i;
  
  for (i = 0; i < 3; i++)
    fgets(str[i], 80, stdin);  // fgets从标准输入流stdin逐行读(最多80-1个字符),自动追加零字符'\0'为第80个字符
  
  for (i = 0; i < 3; i++)
    puts(str[i]);

  return 0;
}

第2个回答  2014-02-13
用循环加上strcpy依次赋值,具体代码如下:
#include<stdio.h>
#include <string.h>
main()
{
int i;
char a[8][8];//建立二维数组
char *p[4]={"qwert","asdfg","zxcvb","pokmjh"};//建立指针数组
for (i=0;i<4;i++)
{
strcpy (a[i],p[i]);puts (a[i]);//把p的内容依次复制到a,可视为字符串的赋值
}
}
第3个回答  2014-02-13
for循环中嵌套一个while,判断条件为遇到回车(\r)跳出while循环,如此反复输入就可将多行放入二维数组中。

for(int i=0;i<length;i++){
while(input() != '\r'){
//加入到数组中
}
}
input为带输入返回值的方法。
第4个回答  2014-03-03
#include<stdio.h>
void main()
{
int i,j;
char str[5][20];
printf("输入几行数据(<=5)");
scanf("%d",&j);
printf("请输入字符串:");
for(i=0;i<j;i++)
scanf("%s",str[i]);
}