葫芦丝双吐小窍门:VC里面 字符串指针数组 把我搞的昏头转向,麻烦帮我看看啊,谢谢

来源:百度文库 编辑:高校问答 时间:2024/04/29 17:12:27
#include<stdio.h>
#include<string.h>
void main()
{
char *a[3];
int i;
for(i=0;i<3;i++)
{
gets(a);
}
for(i=0;i<3;i++)
{
puts(a[i]);
}
}

输入跟输出不一样啊~~~~~怎么回事啊。。。高手赐教啊

有很多错误 一一给你指出
1.#include<string.h> 这个头文件没有用上
2.按照你的意思利用循环体 输入输出一个串 输入和输出函数你用错了
应该用getchar 和putchar
3.指针数组你没有初始化 凡是指针都要初始化 一定要记住
每一个指针数组的元素都是指针要给他赋值要用*a[]的形式
综上 修改如下:

#include<stdio.h>
void main()
{

char *a[3];
char b[3] = {'a','b','c'};//用于初始化
a[0] = b;
a[1] = &b[1];
a[2] = &b[2];
//但这样浪费内存 一般不这么初始化 这里为了让你看明白
int i;

for(i=0;i<3;i++)
{
*a[i]=getchar();
}

for(i=0;i<3;i++)
{
putchar(*a[i]);
}

printf("\n");
}

运行时直接输入3个字符按回车就可以看到了

奇怪啊,gets(a)编译时应该会报错的啊,不知道楼主用的是什么编译器。
这里,a是个长为3的数组,每个元素是一个char *指针,因此读入字符串时,应该向a[i]写入,而不是向a写入。

gets(a); 改为 gets(a[i]);