strncmpi

Newbie Member
2Nov2009,20:03   #1
raagasri's Avatar
Code:
#include <stdio.h>
int main(int argc, char** argv)
{
	char acNamme[10];
	char acPrint[10];
	int iCmp;
	char acName[]= "what is your name";
	printf(acName);
	scanf("%s \n", &acNamme);
	printf("%s \n", acNamme);
	gets(acPrint);
	printf("%s",acPrint);
	iCmp = strncmpi(acNamme,acPrint,3);
	if(iCmp==0)
	{
		printf("Comparison success");
	}
	else
	printf("not success");
}
why i get an error "undefined reference to 'strncmpi' "

Last edited by shabbir; 3Nov2009 at 09:00.. Reason: Code blocks
Mentor
2Nov2009,22:05   #2
xpi0t0s's Avatar
Oops, you forgot to read the posting guidelines. They're really not that difficult to miss and quite easy to read.
Go4Expert Member
26Feb2010,12:21   #3
murugaperumal's Avatar
Dear Friends,

There is no function like "strncmpi" in C . You should you the stcncmp function.


iCmp = strncmp(acNamme,acPrint,3);
Light Poster
26Feb2010,12:47   #4
vivekraj's Avatar
There is no such function called strncmpi in C.

If you want to compare the strings with case sensitive.Then,you use strncmp function.


If you want to compare the strings ignoring case.Then,you use strncasecmp function which is similar to strncmp but ignores the case during comparison.
Go4Expert Member
26Feb2010,12:47   #5
thillai_selvan's Avatar
Are you trying to write your own strncmp function to perform case insensitive comparison?
Go4Expert Member
17Mar2010,17:56   #6
askmewhy25's Avatar
You can use this header file and save it as strncmpi.h

Code:
#include "autocfg.h"
#include "compat/strncmpi.h"
#include <ctype.h>

int strncmpi(const char *a1, const char *a2, unsigned size) {
	char c1, c2;
	/* Want both assignments to happen but a 0 in both to quit, so it's | not || */
	while((size > 0) && (c1=*a1) | (c2=*a2)) {
		if (!c1 || !c2 || /* Unneccesary? */
			(islower(c1) ? toupper(c1) : c1) != (islower(c2) ? toupper(c2) : c2))
			return (c1 - c2);
		a1++;
		a2++;
		size--;
	}
	return 0;
}