找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 3041|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

strncmp函數(shù)實(shí)現(xiàn)及簡(jiǎn)單應(yīng)用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51090 發(fā)表于 2014-9-24 22:32 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

//:Vc++6.0  String  strncmp函數(shù)
//功能:指定大小比較字符串
//參數(shù):str1 字符串1 str2 字符串2  num 比較個(gè)數(shù)
//返回值:正確返回其差值   錯(cuò)誤返回 -65535
#include<stdio.h>

int strncmp(const char *str1, const char *str2, int num);

int main()
{
char str[][5] = {"R2D2", "C3PO", "R2A6"};
int n;
printf("Looking for R2 astromech droids...\n");
for (n=0 ; n<3 ; n++)
if (strncmp(str[n],"R2xx",2) == 0) //比較字符串中前兩個(gè)字符為“R2”
{
printf("found %s\n",str[n]);
}

return 0;
}

int strncmp(const char *str1, const char *str2, int num)
{
//查錯(cuò)
if (str1 == NULL || str2 == NULL)
{
perror("str1 or str2");
return -65535;
}
if (num <= 0)
    {
        perror("num");
        return -65535;
    }

//求字符串長(zhǎng)度
    int len1, len2;
const char *temp1 = str1;
const char *temp2 = str2;
while (*(temp1++) != '\0');
len1 = temp1 - str1;
while (*(temp2++) != '\0');
len2 = temp2 - str2;

//比較
    if (num >= len1 && num >= len2)
    {
            while (*str1 != '\0' || *str2 != '\0')
{
if (*str1 != *str2)
{
return *str1 - *str2;
}
else
{
str1++;
str2++;
}
}
if (*str1 == '\0' && *str2 == '\0')
return 0;
if (*str1 != '\0' && *str2 == '\0')
return *str1;
if (*str1 == '\0' && *str2 != '\0')
return -*str2;
    }
    else
    {
        int i;
        for (i = 0; i < num; i++)
        {
            if (*str1 == '\0' || *str2 == '\0')
                break;
            if (*str1 != *str2)
            {
                return *str1 - *str2;
            }
            else
            {
                str1++;
                str2++;
            }
        }
        if (i >= num)
            return 0;
        if (*str1 != '\0' && *str2 == '\0')
            return *str1;
        if (*str1 == '\0' && *str2 != '\0')
            return -*str2;
    }
}
//在vc++6.0中的運(yùn)行結(jié)果為: Looking for R2 astromech droids...
// found R2D2
// found R2A6 //:~


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表