问一下啊,以下程序出现了什么问题,为什么当输入字符串中有空格时,输出结果就有问题?

#include<stdio.h>
#include<string.h>
void main()
{
void concatenate(char string1[],char string2[],char string[]);
char s1[100],s2[100],s[100];
printf("please input string1:\n");
scanf("%s",s1);
printf("please input string2:\n");
scanf("%s",s2);
concatenate(s1,s2,s);
printf("The new string :\n %s\n",s);
}
void concatenate(char string1[],char string2[],char string[])
{
int i,j;
for(i=0;string1[i]!='\0';i++)
string[i]=string1[i];
for(j=0;string[j]!='\0';j++)
string[i+j]=string2[j];
string[i+j]='\0';
}

其实输出的不是空格,只不过需要占位,显示成空格了 比如:printf("%c%c%c%c%c",0,0,0,0,0);这样就会占用5个字符。 但是\\0在字符串中的用法追问

不很懂你的意思,可以再详细说一下吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-17
scanf 不接受空格
例子如下
wer342 3242 564
wer342
Press any key to continue

#include<stdio.h>
main()
{
char str[100]="\0";
scanf("%s",&str);
printf("%s\n",str);
}

如果要接收带空格的字符串 可以使用 gets()
123 3453 et etrt
123 3453 et etrt
Press any key to continue
#include<stdio.h>
main()
{
char str[100]="\0";
gets(str);
printf("%s\n",str);
}

有问题请追问 满意记得采纳
第2个回答  2011-11-17
不知道啊~同问``
相似回答