私のコードはテキストコンプレッサーのようなもので、通常のテキストを読み取って数字に変換します。すべての単語には数字があります。 DevC++でコンパイルされますが、終了しませんが、Ubuntu13.10ではコンパイルされません。 Ubuntuのタイトル「 `strlwr 'への未定義の参照」のようなエラーが発生します。コードが少し長いため、ここに投稿できませんが、エラーの1つはここからです。
//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("yazi.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);
while (!ispunct(textword[i]))
i++;
if (ispunct(textword[i]))
{
i = 0;
while (textword[i] != '\0')
i++;
i--;
while (ispunct(textword[i]))
i--;
i++;
i=0;
while (isalpha(textword[i]))
i++;
textword[i] = '\0';
}
addNode(textword);
}
}
.... //main continues
strlwr()
は標準のC関数ではありません。おそらく、1つの実装によって提供されますが、使用する他のコンパイラは提供しません。
自分で簡単に実装できます。
#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;
}