任意输入两个字符串(如:“abc 123”和“china”),abc与123之间有一空格键

调试下列c50201.c程序,使之具有如下功能:任意输入两个字符串(如:“abc123”和“china”),并存放在a,b两个数组中。然后把较短的字符串放在a数组,较长的... 调试下列c50201.c程序,使之具有如下功能:任意输入两个字符串(如:“abc 123”和“china”),并存放在a,b两个数组中。然后把较短的字符串放在a数组,较长的字符串放在b数组。并输出。
#include <stdio.h>
#include <string.h>
void main()
{ char a[10],b[10];
int c,d,k,ch;
scanf("%s",&a);
scanf("%s",&b);
printf("a=%s,b=%s\n",a,b);
c=strlen(a);
d=strlen(b);
if(c>d)
for(k=0;k<d;k++)
{ ch=a[k];a[k]=b[k];b[k]=ch;}
printf("a=%s\n",a);
printf("b=%s\n",b);
}
展开
ghf530963
2012-06-04
知道答主
回答量:9
采纳率:0%
帮助的人:6.9万
展开全部
几个问题 首先 scanf 函数是不能支持空格的 我先在你基础上修改,同样还是不支持空格的
其次你的数组越界问题
// ttt.cpp : 定义控制台应用程序的入口点。
//

#include <stdio>
#include <string>
#include "stdafx.h"
#include <cstring>

int _tmain(int argc, _TCHAR* argv[])
{
char a[10],b[10],f[10];
memset(&a,0,sizeof(a));
memset(&b,0,sizeof(b));
memset(&f,0,sizeof(f));
int c,d,k,ch;
scanf("%s",&a);
scanf("%s",&b);
printf("a=%s,b=%s\n",a,b);
c = strlen(a);
d = strlen(b);
if(c<d)
{
memset(&f,0,sizeof(f));
for(k = 0;k<d;k++)
{
f[k]=b[k];
}
memset(&b,0,sizeof(b));
for(k = 0;k<c;k++)
{
b[k]=a[k];
}
memset(&a,0,sizeof(a));
for(k = 0;k<d;k++)
{
a[k]=f[k];
}
}

printf("a=%s\n",a);
printf("b=%s\n",b);
int m;
scanf("%d",&m);
return 0;
}
这是 vs2008写的,不是很规范 ,但是能达到要求了
追问
还是不能正确运行,我需要在VC6.0上运行的,可以吗?
dh990309
2012-05-28
知道答主
回答量:8
采纳率:0%
帮助的人:1.3万
展开全部
111
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式