strncmp( )函数返回值是什么

#include <string.h>   #include <stdio.h>   int main(void)   {   char *buf1 = "aaabbb", *buf2 = "bbbccc", *buf3 = "ccc";   int ptr;   ptr = strncmp(buf2,buf1,3);   if (ptr > 0)   printf("buffer 2 is greater than buffer 1\n");

strncmp( )函数返回值:如果返回值 < 0,则表示 str1 小于 str2。如果返回值 > 0,则表示 str2 小于 str1。如果返回值 = 0,则表示 str1 等于 str2。

字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。其函数声明为int strncmp ( const char *
str1, const char * str2, size_t n )。

功能是把 str1 和 str2 进行比较,最多比较前 n 个字节,若str1与str2的前n个字符相同,则返回0。

扩展资料:

strncmp函数的功能比较:

(1)strncmp函数

用来比较s1和s2字符串的前n个字符。如果两个字符串相等的话,strncmp将返回0。如果s1是s2的一个子串的话,s1小于s2。

(2)strcmp函数

同样用于比较两个字符串 ,设这两个字符串为str1,str2。若str1==str2,则返回零;若str1 > str2,则返回正数;若str1< str2,则返回负数。

参考资料来源:百度百科—strncm

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-23
自己查一下,网上有的!!!

函数名: strncmp
  功 能: 串比较
  用 法: int strncmp(char *str1, char *str2, int maxlen);
  说明:此函数功能即比较字符串str1和str2的前maxlen个字符。如果前maxlen字节完全相等,返回值就=0;在前maxlen字节比较过程中,如果出现str1[n]与str2[n]不等,则返回(str1[n]-str2[n])。追问

谢谢!看到了,就是这有点不明白str1[n]-str2[n】 比如说n=3
char*str1=abcde ; char*str2=abcdf; 你说如何计算?c语言底子比较薄多多指教!!

追答

话说我也是第一次接触这个函数,我写了个程序看了一下。。。

#include

void main()
{
char *str1="ddddefg";
char *str2="abcdefg";
int a;
a=strncmp(str1,str2,3);
printf("%d",a);
}

1、如果str1=abcdefg,那么返回值为0,
2、若str1=abddefg,那么返回值为1,
3、若str1=dbcdefg,那么返回值为3,
4、若str1=ddddefg,那么返回值依然为3,
5、若str1=beddefg,那么返回值依然为1

由以上我认为,应该先比较第一位,若第一位不同,返回第一位的差值;若第一位相同,比较第二位,若第二位不同,返回第二位的差值,若第二位相等,比较第三位.......

追问

谢谢!能不能再给解决一个问题
#if _CONF_DMA_EN
#else
SFRPAGE=ASC0_PAGE;
AD0EN=1;
if else 之间没有语句?

追答

#if与#else是条件编译,与我们平时程序里面的用法有所不同!

在这里先对#if指令中的常量表达式进行计算,若常量表达式的值为非0,则将其后的程序段包含到源文件中来(若if else 之间没有语句,那么应该是不用包含语句进来,我想应该是可行的。),否则,将#else后面的程序段包含进来!!

本回答被提问者采纳
第2个回答  推荐于2017-09-13
strncmp函数是指定比较前maxlen个字符。
strncmp( )函数返回值:
此函数功能即比较字符串str1和str2的前maxlen个字符。如果前maxlen字节完全相等,返回值就=0;在前maxlen字节比较过程中,如果出现str1[n]与str2[n]不等,则依次比较str1和str2的前n位,设i(i<n)为两字符串首次的不同位,则返回(str1[i]-str2[i])。
函数原型:int strncmp(char *str1, char *str2, int maxlen);
参数:
str1 指向第一个字符串的指针
str2 指向第二个字符串的指针
maxlen 比较的字符的个数,从第一个开始算
返回值: 整型
实例:
#include<string.h>
#include<stdio.h>
int main(void)
{
char *buf1="aaabbb",*buf2="bbbccc",*buf3="ccc";
int ptr;
ptr=strncmp(buf2,buf1,3);
if(ptr>0)
printf("buffer2 is greater than buffer1\n");
elseif(ptr<0)
printf("buffer2 is less than buffer1\n");
ptr=strncmp(buf2,buf3,3);
if(ptr>0)
printf("buffer2 is greater than buffer3\n");
elseif(ptr<0)
printf("buffer2 is less than buffer3\n");
return(0);
}
运行结果:
buffer2 is greater than buffer1
buffer2 is less than buffer3