| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 986 人关注过本帖, 1 人收藏
标题:字符串排序出错(已解决)
取消只看楼主 加入收藏
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
结帖率:83.33%
收藏(1)
 问题点数:0 回复次数:5 
字符串排序出错(已解决)
#include <iostream>
using namespace std;
int main()
{
    void sort(char s[][]);
    char str[10][8];
    cout<<"输入字符串:";
    int i,j;
    for(i=0;i<10;i++)
    {cin>>str[i];
    }
    sort (str);
    for(i=0;i<10;i++)
    {
        cout<<str[i]<<endl;
    }
return 0;
}
void sort(char s[10][8])
{
    char *p,temp[10];
    p=temp;
    int i,j;
    for( i=0;i<9;i++)
        for( j=0;j<9-i;j++)
            if(strcmp(s[j],s[j+1])>0)
            {
                strcpy(p,s[j]);
                strcpy(s[j],s[j+1]);
                strcpy(s[j+1],p);
            }
    for(i=0;i<10;i++)
        cout<<s[i];

}
报错如下:E:\c++\字符串排序\主.cpp(5) : error C2087: '<Unknown>' : missing subscript
E:\c++\字符串排序\主.cpp(12) : error C2664: 'sort' : cannot convert parameter 1 from 'char [10][8]' to 'char [][1]'        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
执行 cl.exe 时出错(

[[it] 本帖最后由 yqiong 于 2008-3-28 12:01 编辑 [/it]]
搜索更多相关主题的帖子: 字符 
2008-03-22 16:27
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
收藏
得分:0 
为什么上面的错了?用二维数组做实形参不行吗?
2008-03-23 22:56
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
收藏
得分:0 
#include <iostream>
using namespace std;
int main()
{
    void sort(char **s);//[bo]原为s[][][/bo]
    char *str[10];//[bo]原为str[10][8][/bo]
    cout<<"输入字符串:";
    int i,j;
    for(i=0;i<10;i++)
    {   str[i]=new char[8];
       cin>>str[i];
    }
    sort (str);
    for(i=0;i<10;i++)
    {
        cout<<str[i]<<endl;
    }
return 0;
}
void sort(char **s)//[bo]原为s[][8][/bo]
{
    char *p,temp[10];
    p=temp;
    int i,j;
    for( i=0;i<9;i++)
        for( j=0;j<9-i;j++)
            if(strcmp(s[j],s[j+1])>0)
            {
                strcpy(p,s[j]);
                strcpy(s[j],s[j+1]);
                strcpy(s[j+1],p);
            }
  }
以上程序能正确运行,但为什么以前的不对呀,用数组形式作参数不可以吗?
2008-03-24 12:05
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
收藏
得分:0 
定义:char *s[10];
      char str[10][8];
除了三维的下界不一样外(s引用时二维下标无限制,而str引用下标只能为0-7),这两者在引用上有什么区别呀?
2008-03-24 12:30
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
收藏
得分:0 
按楼上改的运行时也出错呢
???
出错提示:[bo]E:\c++\字符串排序(未)\主.cpp(11) : error C2440: '=' : cannot convert from 'char *' to 'char [8]'[/bo]
2008-03-26 12:01
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
收藏
得分:0 
在C中用以下二维数组形式做参数为什么可以,而在上述程序中又行不通呢?我不明白,能否详细解释下,先谢谢了!
#include <stdio.h>
#include <string.h>
main()
{int i;
 char str[10][8];
  void sort(char s[][8]);
  printf("please enter the string");
    for(i=0;i<10;i++)
    {
       scanf("%s",&str[i]);
    }
    sort (str);
    for(i=0;i<10;i++)
    {
        printf("%s\n",str[i]);

    }
}
void sort(char s[][8])
{       int j,i;
    char  *p,temp[10];
    p=temp;
    for( i=0;i<9;i++)
        for( j=0;j<9-i;j++)
            if(strcmp(s[j],s[j+1])>0)
            {
                strcpy(p,s[j]);
                strcpy(s[j],s[j+1]);
                strcpy(s[j+1],p);
            }

}
2008-03-26 12:24
快速回复:字符串排序出错(已解决)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038361 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved