#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]);
}
}
#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;本回答被提问者和网友采纳