hyfm.net
当前位置:首页 >> C语言输入二维字符串 >>

C语言输入二维字符串

用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; }

main() { int i,j; char c[3][4]; for(i=0;i<2;i++) scanf("%c %c %c %c\n",&c[i][0],&c[i][1],&c[i][2],&c[i][3]); scanf("%c %c %c %c",&c[2][0],&c[2][1],&c[2][2],&c[2][3]); for(i=0;i<3;i++) { printf("\n"); for(j=0;j<4;j++) printf("%c ",c[i][j]); } }

你可以创建一个二维数组 char ss[30][301]; 这个二维数组就可以存储30个含有300个以下的字符(留一个字节给空字符)的字符串.想要存入字符串的时候把ss[0]~ss[29]当成普通的字符数组名用就行了,比如说存入第一个字符串:scanf("%s",ss[0]); 或 gets(ss[0]); 打印:printf("%s",ss[0]); 或 puts(ss[0]);

二维数组存放了7个字符串,所以第一维的长度是7.输出字符串的时候需要知道字符串的首地址,ss[i]存放的就是字符串的首地址

gets(c[0])输入第一行的字符串gets(c[1])输入第二行的字符串,以此类推.scanf("%s",c[0])输入一行的字符串,以此类推.

a[3][4]用于存放三个字符串,每个字符串总长度不超过4字节 ,即每行存放一个字符串 for(p=a;p<a+3;p++)gets(p[0]); 输入三个字符串, 按顺序存入数组中

试着你改成 char [][],char *ip[4] 这表示一个数组有四个元素,而每个元素是一个字符串 应该更能清楚地表达你要表达的效果

指用来存放字符的数组字符数组的定义用来存放字符量的数组称为字符数组.其定义的一般形式时: char 数组名[数据长度] 字符数组用于存放字符或字符串,字符数组中的一个元素存放一个字符,它在内存中占用两个字节.字符数组类型说明的形式与前面介绍的数值数组相同.例如:char a[10]; 由于字符型和整型通用,也可以定义为:int a[10]; 但这时每个数组元素占2个字节的内存单元.字符数组也可以是二维或多维数组,例如:char c[5][10];

#include<stdio.h> void main() { int i; char name[3][20]; //是你定义的数组不对,[a][b] a代表你要输入个名字个数,b代表你输入的名字长度 for(i=0;i<3;i++) { scanf("%s",&name[i]); } printf("输出:\n"); for(i=0;i<3;i++) { printf("%s\n",name[i]); } }

多个字符串的输入输出#include <stdio.h> int main() { char a[3][20]; char *p; int i; p=a[0]; for (i=0;i<3;i++)gets(a[i]);// for (i=0;i<3;i++)printf("%s\n",a[i]); // 可以直接用 a[i]:for (i=0;i<3;i++)printf("%s\n",p+i*20); //指针寻址;//第二个字符串开始的地址,应该是a[0][0]后移20个字符的地方.p是指向字符的指针 }

网站首页 | 网站地图
All rights reserved Powered by www.hyfm.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com