C语言指针数组的问题!十万火急

来源:百度知道 编辑:UC知道 时间:2024/06/07 00:59:24
#include<stdio.h>
#define N 3

void main()
{

int i=0;
char *p[N];

for(i=0;i<N;i++)
gets(p[i]);
printf("%s\n",p[0]);
printf("%s\n",p[1]);
printf("%s\n",p[2]);

getchar(); getchar();
}

为什么只有第二个显示为NULL啊????????????急死我了
#include<stdio.h>
#define N 3

void main()
{

int i=0;
char *p[N];

for(i=0;i<N;i++)
gets(p[i]);
printf("%s\n",p[0]);
printf("%s\n",p[1]);
printf("%s\n",p[2]);

getchar(); getchar();
}

再试试,谢谢了!!!!!!!

你的程序根本就不能通过编译!

p要开实际存放单元,不能是无存放单元的指针。
你要的去多空白函数也给你

#include<stdio.h>
#define N 3

void f1(char *s)
{
int i,j,L;
L = strlen(s);
for (i=L-1;i>0;i--){
if (s[i] == ' ' && s[i-1] == ' '){
for (j=i;j<L-1;j++) s[j-1]=s[j];
}
}
}

void main()
{
int i=0;
char p[N][80];
for(i=0;i<N;i++)
gets(p[i]);
f1(p[0]);
printf("%s\n",p[0]);
f1(p[1]);
printf("%s\n",p[1]);
f1(p[2]);
printf("%s\n",p[2]);
getchar(); getchar();
}

你的P[I]指针没有指向数组就赋值,当然会出错了
char array[80];
for(i=0;i<N;i++){
p[i]=array;
gets(p[i]);}
再试试