C语言 读取字符串问题

#include"stdio.h"
main()
{
char *a[1000]={NULL}, hold[100];
int i;

printf("Please input a string:");
scanf("%s", hold);
for (i = 0; hold[0] != 10; i++)
{
a[i] = hold;
scanf("%s", hold);
}

int j;
printf("The result is:\n");
for (j = 0; j <= i - 1; j++)
printf("%s\n", a[j]);
}

问题1:不知道如何停止读取,我的判断是错误的,scanf会跳过换行;
问题2:为何每次scanf("%s", hold);之后,a的前几个元素全变成hold的了;

char *a[1000]={NULL}, 这里a是个指针数组

for (i = 0; hold[0] != 10; i++) //hold中不可能有'\n'!!!!
{
a[i] = hold; //这里将每个a[i]都指向了hold,想要做什么? 你看到的当然全是hold啊
scanf("%s", hold);
}
看完整个程序也没有看明白你想干什么
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-03
1、首先建议在详细看下scanf的定义,在其中换行符是作为空白符的,意思是他在流中会读入,但是不会保存,是作为控制支付使用的,还有两个空白符是:空格、TAB。所以你不能用这三个字符来判断。
2、a的每个元素都指向了hold,所以只要hold一边,a所指向的内容其实还是hold,所以说你只能看到一个内容。本来你也只定义了一个字符串数组,还想用它来保存多个字符串吗?
相似回答