C语言-对输入n个字符串进行排序(无导入string.h)

#include <stdio.h>
#include "stdlib.h"

#define N 256  //宏定义

//比较两个字符串的大小
int str_compare(const char* src,const char* dst)
{
	int ret = 0;
	if (src == dst)
	{
		return 0;
	}
	if (dst == NULL)
	{
		return -1;
	}
	while (!(ret = *(unsigned char*)src - *(unsigned char*)dst)&& *dst)
	{
		++src,++dst;
	}
	if (ret < 0)
	{
		ret = -1;
	}
	else if (ret > 0)
	{
		ret = 1;
	}
	return ret;
}

//排序函数
void sort_string( char *strs[],int len)
{
	int i=0,j;
	for(i=0;i<len;i++)
	{
		for ( j = 1; j < len - i; j++)
		{
			if(str_compare(strs[j-1],strs[j]) >0)
			{
				char *tmp = 0;
				tmp = strs[j-1];
				strs[j-1] = strs[j];
				strs[j] = tmp;
			}
		}

	}
	//输出排序后的字符串
	for( i=0;i<len;i++)
	{
		printf("%s\n",strs[i]);
	}
}
int  main()
{
	//声明二维数组
	char str[N][256];
	//声明指针数组
	char *ps[N];

	int i=0,j;
	for(j=0;j<N;j++)
		ps[j]=NULL;
	printf("输入字符串(每个字符串间换行输入,空格结束输入):\n");
	for(;i<N;i++)
	{
		gets(str[i]);
		if (str_compare(str[i]," ")==0)//空格串作为字符串输入结束符
			break;
		ps[i]=str[i];
	}

	printf("一共有 %d 个字符串.\n",i);
	printf("排序后的字符串为:\n");
	sort_string(ps,i);//调用排序函数

	printf("\n");
	system("pause");
	return 0;
}

时间: 2024-10-02 10:22:26

C语言-对输入n个字符串进行排序(无导入string.h)的相关文章

C语言 对输入的一个字符串进行排序

#include <stdlib.h> #include <stdio.h> #include<string.h> void main() { char str[50]; int i,j,len; printf("请输入字符串:"); scanf("%s",str); len=strlen(str);//计算你输入的字符串的长度 if(len>50) { puts("输入的字符大于50!重新输入:");

C语言 动态输入字符串

作者 :卿笃军 很多时候,我们不知道要开辟多大的空间,但是我们又想实现无限制的输入~~~ 这时候,就需要用到动态空间的开辟了. 先简绍2个函数: malloc()  , realloc() 函数名:malloc 原型:externvoid *malloc(unsigned int num_bytes); 功能:在堆中开辟num_bytes个字节的空间 函数名:realloc 原型:externvoid *realloc(void *mem_address, unsigned intnewsize

C语言-对输入的n个字符串进行排序

#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 256 //宏定义 int main() { char strArray[N][256]; char *str[N]; char *temp; int i,n; printf("请输入字符串:\n"); for(i=0;i<N;i++) { gets(strArray[i]); if (strcmp(strArra

C语言-输入任意个字符串

来源网站: ==== http://bbs.csdn.net/topics/391045349?page=1#post-399279449 方法一: //输入任意个字符串 #include <stdio.h> #include <stdlib.h> #include <string.h> #define LINE 5 int main() { int i = 0, n = LINE; int l, len; char **str; char buf[256]; //每个

C语言打印记事本内搜索字符串所在行信息

本程序采用C语言编写,使用方法: 1.双击“甲骨文字符串查询作品.exe”运行程序; 2.运行前请确保此可执行程序目录下有1.txt文件. 3.根据提示输入一个字符串,程序将显示存在所搜索字符串的所有行! 程序如果问题,请联系[email protected]! 2014-7-31日安阳师范学院机房完成. 程序截图: 源码如下: #include <stdio.h> #include<string.h> #include<stdlib.h> #include<co

C语言学习(二)——字符串和格式化输入输出

C语言学习(二)——字符串和格式化输入输出 1.char数组类型和空字符 C没有为字符串定义专门的变量类型,而是把它存储在char数组里.数组的最后一个位置显示字符\0.这个字符就是空字符,C用它来标记字符串的结束,其ASCII码的值为(或者等同于)0.C的字符串存储时通常以这个空字符结束,该字符的存在意味着数组的单元数必须至少比要存储的字符数多1.计算机可以自己处理大多数这些细节问题(例如,scanf( )会添加'\0'使得数组内容成为C字符串). 2.strlen( )函数与sizeof运算

C语言scanf输入格式 printf输出格式

对于刚接触C语言的同学来说 可能会遇到这个问题 因为博主也是个菜鸟经常因为搞不清楚单精度双精度还有输入输出格式的问题 就这个问题也百度的很多次 所以在这里总结一下分享给大家 printf输出格式 1.转换说明符       %a(%A)     浮点数.十六进制数字和p-(P-)记数法(C99)       %c             字符       %d             有符号十进制整数       %f              浮点数(包括float和doulbe)      

[笔记]一道C语言面试题:IPv4字符串转为UInt整数

题目:输入一个IPv4字符串,如“1.2.3.4”,输出对应的无符号整数,如本例输出为 0x01020304. 来源:某500强企业面试题目 思路:从尾部扫描到头部,一旦发现无法转换,立即返回,减少无谓操作. #include "stdio.h" #include "stdlib.h" #include "string.h" bool ConvertIPv4ToUInt(const char *strIP, unsigned int *ip) {

Django与SQL语言中——NULL与空字符串的区别

SQL有指定空值的独特方式,它把空值叫做NULL. Null在数据库中表示 不知道的数据,主要有3种意思: 1)知道数据存在,但不知道具体值. 2)不知道数据是否存在. 3)数据不存在. 在SQL中, NULL的值不同于空字符串,就像Python中None不同于空字符串("")一样.这意味着某个字符型字段(如VARCHAR)的值不可能同时包含NULL和空字符串. 这会引起不必要的歧义或疑惑. 为什么这条记录有个NULL,而那条记录却有个空字符串? 它们之间有区别,还是数据输入不一致?