C根据排序字符串

本文介绍了一种使用C语言从文件中读取字符串并进行排序的方法。通过两种方式:使用fgets函数逐行读取和使用fscanf函数按单词读取,实现了字符串数组的构建,并利用比较函数完成了字符串的排序输出。
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define STR_LEN_MAX 100

char **ppcStringArry = NULL;
int num = 0;

void OutPutTest1();
void OutPutTest2();
/* 字符串数组输出函数*/
void OutPut()
{
    int i = 0 ;
    for (; i < num; i++)
    {
        if (NULL != ppcStringArry[i])
        {
            //free(ppcStringArry[i]);
        }
        printf("index is %d, string is %s.\r\n", i, ppcStringArry[i]);
    }
    printf("\r\n");
    printf("%s\r\n", "----------------------------------");
}
/* 字符串数组排序输出函数*/
void SortOutPut()
{
    int m = 0;
    int n = 0;
    char * temp = NULL;
    for (m = 0; m < num -1; m++)
    {
        for (n = m + 1; n < num; n++)
        {
            if (strcmp(ppcStringArry[m], ppcStringArry[n]) > 0)
            {
                temp = ppcStringArry[m];
                ppcStringArry[m] = ppcStringArry[n];
                ppcStringArry[n] = temp;
            }
        }
    }
    OutPut();

}

int main()
{
    //OutPutTest1();
    OutPutTest2();
}
/* 使用fgets函数*/
void OutPutTest1()
{
    char acDate[STR_LEN_MAX] = {0};
    FILE * pFile;
    pFile = fopen("F://C/1.txt", "ab+");
    num = 0;
    ppcStringArry = (char**)malloc(STR_LEN_MAX * sizeof(char*));
    while(NULL != fgets(acDate, STR_LEN_MAX, pFile))
    {
        ppcStringArry[num] = (char*)malloc(STR_LEN_MAX);
        memset(ppcStringArry[num], 0, STR_LEN_MAX);

        memcpy(ppcStringArry[num], acDate, strlen(acDate)+1);
        memset(acDate, 0, sizeof(acDate));
        num++;

    }
    SortOutPut();
}
/* 使用fscanf函数*/
void OutPutTest2()
{
    //char acDate[STR_LEN_MAX] = {0};
    FILE * pFile;
    pFile = fopen("F://C/1.txt", "ab+");
    int ret = 0;
    num = 0;
    ppcStringArry = (char**)malloc(STR_LEN_MAX * sizeof(char*));
    ppcStringArry[num] = (char*)malloc(STR_LEN_MAX);
    memset(ppcStringArry[num], 0, STR_LEN_MAX);
    ret = fscanf(pFile, "%s", ppcStringArry[num]);

    while( EOF != ret)
    {
        num++;
        ppcStringArry[num] = (char*)malloc(STR_LEN_MAX);
        memset(ppcStringArry[num], 0, STR_LEN_MAX);
        ret = fscanf(pFile, "%s", ppcStringArry[num]);
    }
    SortOutPut();
}

 

转载于:https://www.cnblogs.com/xiaodeyao/p/7859649.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值