C字符串输入输出

来源:百度知道 编辑:UC知道 时间:2024/06/06 16:30:22
main()
{
char *a[3];
int i;
for(i=0;i<3;i++)
scanf("%s",a[i]);
for(i=0;i<3;i++)
printf("%s\n",a[i]);
}
为什么出错??
要是定义个指针**p=a;
输入输出怎么写?

#include<stdio.h>
#include<malloc.h>

int main()
{
char *a[3]; //你这个是指针数组,声明后要先分配内存空间才能用。
c里面可以用malloc 动态分配。
int i;
for(i=0;i<3;i++)
a[i] = (char *)malloc(sizeof(char));
for(i=0;i<3;i++)
scanf("%s",a[i]);
for(i=0;i<3;i++)
printf("%s\n",a[i]);
return 0;
}

char *a[3];定义的是3个char*,指针是没有内存空间的。你需要为这3个指针分配空间。

a[i] = new char[256];

输入时,要带上 "&" 取地址运算符.
你试试,我这里没有运行环境.

#include<stdio.h>
void main()
{
char a[3][10];
int i,j;
for(i=0,j=0;i<3;i++)
{

scanf("%s",*(a+i));
}
for(i=0;i<3;i++)

printf("%s\n",a[i]);
}
这个我运行过了,可以如果a[3][10]中10不够大的话还可以更大。
楼主应该是要输入三个字符串吧,那就应该没错。

应该是char a[i]不要写*
a[i]前应该是有&