undefined reference to `strlwr'
24,883
strlwr()
is not standard C function. Probably it's provided by one implementation while the other compiler you use don't.
You can easily implement it yourself:
#include <string.h>
#include<ctype.h>
char *strlwr(char *str)
{
unsigned char *p = (unsigned char *)str;
while (*p) {
*p = tolower((unsigned char)*p);
p++;
}
return str;
}
Author by
mrtgnccn
Updated on April 10, 2021Comments
-
mrtgnccn about 3 years
My code is like a text compressor, reading normal text and turns into numbers, every word has a number. It compiles in DevC++ but does not end, however, it does not compile in Ubuntu 13.10. I'm getting an error like in the title in Ubuntu "undefined reference to `strlwr'", my code is a little long so I am not able to post it here, but one of the error is from here:
//operatinal funcitons here int main() { int i = 0, select; char filename[50], textword[40], find[20], insert[20], delete[20]; FILE *fp, *fp2, *fp3; printf("Enter the file name: "); fflush(stdout); scanf("%s", filename); fp = fopen(filename, "r"); fp2 = fopen("text.txt", "w+"); while (fp == NULL) { printf("Wrong file name, please enter file name again: "); fflush(stdout); scanf("%s", filename); fp = fopen(filename, "r"); } while (!feof(fp)) { while(fscanf(fp, "%s", textword) == 1) { strlwr(textword); //some other logic } } .... //main continues
-
Jonathan Leffler about 10 yearsJust in case
char
is signed, you should usestr[i] = tolower((unsigned char)str[i]);
. -
mrtgnccn about 10 years@BlueMoon Thank you sir, I did it like you said and it became alive. However I saw strcmp() as a standart C function and that is why I used it. Thank you again.
-
P.P about 10 yearsstrcmp() is a standard function, while strlwr() isn't. The documentation of strlwr() would have mentioned about it (I hope!).
-
Jonathan Leffler about 10 years@BlueMoon: FYI: on Linux (Ubuntu 14.04 specifically, with GCC 4.8.2 specifically, but I think it is valid for x86 and x86_64 versions of Linux generically), plain
char
is a signed type; the range isCHAR_MIN == -128 && CHAR_MAX == +127
. Ditto for Mac OS X 10.9.2 Mavericks and GCC 4.9.0.