求助,如何用Scanf或Gets函数将连续输入的,以回车隔开的多个字符串分别写入数组,再原封不动的打印出来?
发布网友
发布时间:2022-04-28 21:40
我来回答
共3个回答
热心网友
时间:2023-09-16 21:23
1.需要用二维字符数组
2.
原因在于gets()的返回值是传入的参数的地址,而不是读取的字符,以下程序可以达到你的目的,注意输入CTRL+D时要另起一行。
//---------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
char a[100][80];
int i,n;
for (i=0; ;++i ) {
if((a[i][0]=getchar())==EOF) {
a[i][0]='\0';
break;
}
else gets(&a[i][1]);
}
for (n=0; a[n][0]; n++) {
puts(a[n]);
}
return 0;
}
//---------------------------------------------------------------------------
热心网友
时间:2023-09-16 21:23
对于第一个问题:
如果是c++,只要用string型变量就可以了。
在C语言中麻烦点,但是,也行,可以用*数组,但不能够用gets.
O(∩_∩)O~
第二个问题:
windows环境下那两个组合键不是Ctrl+D,我记不清了,你可以换用-1或0 也行。
热心网友
时间:2023-09-16 21:24
可以用指针数组
char data[100];
char*abc[10];
gets(data); 单词之间打空格回车结束 (字符单个输入getschar())
data被定义了如
data[100]={"i am shuang yu you xia "};
for(j=0;j<100;j=j+1);
{
*abc[i]=data[j];
if(j==" ") /* " "为空格字符*/
i=i+1;
}
这样
*abc[0]={"i "}
*abc[1]={"am "} 指针一维数组相当于二维数组
*abc[2]={"shuang "}
... ...
指针式c语言的精髓
属于高级程序员必掌握知识
参考资料:多学学指针有好处