C语言,用指针输出二维字符串数组的问题

#include<stdio.h>
#include<string.h>
void main()
{
char number[40][40],*pn;
pn=number[0];
int score[40],*ps;
ps=score;
int i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
{ scanf("%s",pn+i);
}
for(i=0;i<n;i++)
{ printf("%s\n",pn+i);

}
}

这个程序我输入3个个字符串abcd abce abcf
他为什么输出aaabcf aabcf abcf呢...
我想让他原样输出...

#include<stdio.h>

#include<string.h>

void main()

{

 char number[36][40],(*pn)[40];

 pn=number[0];

 int score[40],*ps;

 ps=score;

 int i,n;

 scanf("%d",&n);

 for(i=0;i<n;i++)

 { scanf("%s",pn[i]);

 }

 for(i=0;i<n;i++)

 { printf("%s\n",pn[i]);

 

 }

}

对于二维数组,要么用指向数组的指针,这时要定义指针的纬度,就好像,二维数组定义时,必须确定最后那个方括号的纬度

要么就用指针数组,那你必须用循环,一一给每个指针赋值

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-03

注意这行:pn=number[0];

这样pn指向的只是number[0],也就是第一个字符串啦。

所以scanf("%s",pn+i);全部写入的是number[0],导入最后

number[0] == "aaabcf"

所以会得到那样的输出结果。

原意是不是想写这样?

char number[40][40];
char **pn = number;

本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网