c++中使用字符指针五个字符串排序

来源:百度知道 编辑:UC知道 时间:2024/07/05 05:55:02
使用字符指针将这五个字符串排序
#include <iostream>
using namespace std;
int main()
{
char *str[]={"basic","pasical","c","sb","woshi"};
int n=5;
void sort(char *str[],int n);
void print(char *str[],int n);
sort(str,n);
print(str,n);
return 0;
}
void sort(char *str[],int n)
{
char *temp;
int i,j,k;
for (i=0;i<n-1;i++)
{
k=i;

for (j=1;j<n;j++)
if (strcmp(str[k],str[j])>0) k=j;
if (k!=i)
{ temp=str[i];str[i]=str[k];str[k]=temp;}
}
}
void print(char *str[],int n)
{
int i;
for (i=0;i<n;i++)
cout<<str[i]<<endl;
}

程序输出结果错误。。。为什么没有#include <cstring> 却也能用strcmp函数
这个程序那里出错了???
谭浩强的那本C++的书里面说在使用那几个字符串的函数时必须要包含<cstring>头文件。。。在书里的很多例子中却没有。。。。。。

把sort中第二层循环中的第一句j = 1 改成 j = i就可以了,你想用冒泡的,但是最后又冒回去了。

至于没有包含cstring为什么也可以用,iostream中引入了ostream和istream,而这两个都引入了ios,ios中使用了char_traits,这个使用了cstring,所以cstring不用引入了
这个是G++的实现的解释,顶楼上的,估计是VC的~

C++里默认了 <cstring>吧

iostream 已经包含了cstring ,如下是从标准库里提取的代码
// iosfwd standard header
#pragma once
#ifndef _IOSFWD_
#define _IOSFWD_
#ifndef RC_INVOKED
#include <cstdio>
#include <cstring>
#include <cwchar>
#include <xstddef>
#include <crtdbg.h>