简单的输入 输出问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 22:40:51
#include<stdio.h>
void main()
{
char s1[10],s2[10];
scanf("%s,%s",s1,s2);
printf("\n%s\n",s1);
printf("\n%s\n",s2);
}
请问 如何 正确 输入 输出
说明 原因 好么
要用 ,号做分隔符
输出是这样 假如输入 fds,dsf
s1输出 fds,dsf
s2输出 烫烫烫烫烫烫fds,dsf //这是 怎么回事 重点 解释
如果s1 接收了全部字符
那S2 为什么 也能输出 ... fds,dsf
我知道 把,号 改成空格 作为 分隔符 就好了
想知道 这情况是怎么 回事 挺迷糊的

#include<stdio.h>
void main()
{
char s1[10]={0},s2[10]={0};

scanf("%s ,%s",s1,s2);
printf("s1=%s\n",s1);
printf("s2=%s\n",s2);
}
如果想上面这样写的话:“%s ,%s”,输入为:abc<空格>,efg
那么s1获取到abc,s2获取到efg

像楼主那样写,没有办法同时让s1和s2都得到正确的值了

补充:
假如用楼主的程序
输入: fds,dsf
s1输出 fds,dsf
s2输出 烫烫烫烫烫烫fds,dsf
原因在于s1把这个包含逗号的整个字符串接收去了
而s2没有接收到任何内容,它又没有被初始化
所以,输出它的时候,内容是乱的
因为s1和s2都在堆栈中,所以s2后面是s1
所以,后面输出了s1的内容,直到碰到在字符串结束符

我倒
你在用scanf("%s,%s",s1,s2);出错了.用scan方法必须带&.切记

从s1的输出看,你的s1没有停到,处,这样,s2应该是取自输入串的一个分隔符(Tab、空格、回车),当然你的字串只到dsf\0就完了,而s2在s1前面,你检查一下你源程序中的那个逗号,真的和你输入时的,一样吗?是不是一个是汉字全角的,或者别的Unicode码位的,非ASCII的那个?

char s1[10],s2[10];
该语句执行之后,在内存的全局区分配了两段空间,大小分别为s1和s2的长度10,10;由于这两段内存靠的很近,所以
s1输出 fds,dsf
s2输出 烫烫烫烫烫烫fds,dsf
s2输出的最后几个字符实际上s1的字符,由于s2没有被赋值,所以为烫烫烫烫烫烫,在VC++6.0中每个字符的值为-52(十进制)。
由于prin