字符串二维数组赋值与输出教程:实战示例解析
怎样定义一个字符串型的二维数组赋值并输出呀?最好有个例子!谢了!
二维数组array[n][m]的赋值和输出必须使用两个变量来定位。两个变量i和j可以分别表示行和列。
一旦确定,就对array[i][j]执行操作。
for(i=0;i
c++二维数组输入输出问题
cin>>a[i][100];只能输入一个字母,改为cin>>a[i];每个字符串字符,而这个循环只能将输入字符串的顺序颠倒,先输入再输出,最好是从chara[100][100]={0}开始;二维字符数组如何输入和输出
像这样:
#include
intmain()
{
chara[3][20];
char*p;
inti;
p=a[0];//a[0]为列指针,p指向到行从0到第0列的元素,p=a[0]+j表示第0行j列的元素。
for(i=0;i<3>
//for(i=0;i<3>
for(i=0;i<3>
;//20个字符后第二个字符串的起始地址必须移动A[0][0]。
p是指向字符的指针
}
数组名代表列指针*(a+i),相当于a[i]列指针。
#include
intmain()
{
chara[3][20];
inti;
for(i=0;i<3>
//for(i=0;i<3>
for(i=0;i<3>
}
详细信息:注释
对于二维数组的输入,一般情况下当然可以逐行输入,但最好是逐行输入。
所以逐行输入:
for(inti=0;i scanf("%s",perNum[i]); 对于输入来说,%c用于单行输入,%s用于一行输入。 在一种情况下,每个输入行必须存储18个数字,因此想法是建立一个18列的二维数组。 charperNum[100][18]; 那么此时的输入输出代码: charperNum[100][18]; intN; scanf("%d",&N); for(inti=0;i \tscanf("%s",perNum[i]); for(inti=0;i \tprintf("%s\n",perNum[i]); 其中第一行的2就是这两个-维表示数组中的行数。 这时候发现输入没有问题,但是输出的时候,按理说应该是2行18列。 问题在于,输出时,根据\0,即换行符,决定是否输出换行符。 所以这里的改进是在二维数组中至少再添加一列来存储新行。 所以代码改为: charperNum[100][19];//比18多一位,存储换行符 整数N; scanf("%d",&N); for(inti=0;i \tscanf("%s",perNum[i]); for(inti=0;i \tprintf('%s\n',perNum[i]);
但是,我发现第一行的输出也输出了第二行的输入。
但是,由于固定列数只有18,只保存输入,因此没有空间存储换行符(\0)。