#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
谢谢!看到了,就是这有点不明白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后面的程序段包含进来!!