黑马程序员技术交流社区
标题:
替换两个字符串内容的方法
[打印本页]
作者:
桑托尔
时间:
2014-4-23 09:44
标题:
替换两个字符串内容的方法
本帖最后由 桑托尔 于 2014-4-23 13:45 编辑
之前基础测试里面 出现了这样一道题,让随机输入6个字符串,要求是这6个字符串从短到长排列出来。
我的思路是这样的。把6个字符串分别录入之后,先把第一个字符串定义为最短,然后逐条与之后的进行比较,如果之后发现有比第一条更短的,就让这两条进行替换。这样第一条就是最短的了,
然后把第二条字符串定义为第二短,再分别逐条与之后的比较...
具体可以参看下面编码。
问题是 不知道为什么 替换两值,strcpy的那段总是报错,
如果把替换的那段代码注释变为空语句,错误就没了。
明明就是那个用法啊...
不知问题所在,求帮助
谢谢!
#include <stdio.h>
#include <string.h>
int main()
{
char str[6][100];
for( int n = 0 ; n < 6 ; n++ )
{
printf("请输入第%d个字符串\n", n+1 );
gets(str[n]);
};
for( int i = 0 ; i < 6 ; i++)
{
for( int j = i + 1 ; j < 6 ; j++)
{
if (strlen(str[i]) > strlen(str[j]))
{
//左右两值互换
int temp[100];
strcpy(temp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],str[i]);
};
};
};
for (int m = 0 ; m < 6 ; m++)
printf("%s\n",str[i]);
return 0 ;
}
复制代码
作者:
agelessman
时间:
2014-4-23 10:38
本帖最后由 agelessman 于 2014-4-23 10:39 编辑
for( int i = 0 ; i < 6 ; i++)
{
for( int j = i + 1 ; j < 6 ; j++)
{
if (strlen(str
) > strlen(str[j]))
{
//左右两值互换
int temp[100];
这个是最好改成char temp【100】
strcpy(temp,str
);
strcpy(str
,str[j]);
strcpy(str[j],str
);
};
};
};
for (int m = 0 ; m < 6 ; m++)
printf("%s\n",str
);
这个吧后面的str【i】改成str【m】
作者:
董月峰
时间:
2014-4-23 11:28
楼主犯了3处错误,我直接上代码你自己看我写的注释吧
#include <stdio.h>
#include <string.h>
int main()
{
char str[6][111];
for( int n = 0 ; n < 6 ; n++ )
{
printf("请输入第%d个字符串\n", n+1 );
gets(str[n]);
};
for( int i = 0 ; i < 6 ; i++)
{
for( int j = i + 1 ; j < 6 ; j++)
{
if (strlen(str[i]) > strlen(str[j]))
{
//左右两值互换,此处2处修改,1。是修改temp为字符数组,2。是值互换方法你搞错了
char temp[111];
strcpy(temp, str[i]);
strcpy(str[i], str[j]);
strcpy(str[j], temp);
};
};
};
// 3.此处错误是str【i】
for (int m = 0 ; m < 6 ; m++)
printf("%s\n",str[m]);
return 0 ;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2