这里记录一个不区分大小写比较字符串的自定义函数。
m_strcmpi.c
//字符串比较(不区分大小写)
int m_strcmpi(char *s1, char *s2)
{
if (NULL == s1 || NULL == s2)
return -1;
char ch1 = '\0', ch2 = '\0';
int len = strlen(s1);
int len2 = strlen(s2);
if (len != len2) { //先用两个字符串的长度作比较
return -1;
}
while (len > 0)
{
//统一转换为大写作比较
ch1 = (*s1 >= 'a' && *s1 <= 'z') ? (*s1 - 32) : *s1;
ch2 = (*s2 >= 'a' && *s2 <= 'z') ? (*s2 - 32) : *s2;
if (ch1 != ch2)
return -1;
s1++;
s2++;
len--;
}
return 0;
}
text.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SCANF_BUFF 1024
int m_enter_scanf(char *s, int len); //这个函数在我的“C语言的字习之路一”中
int m_strcmpi(char *s1, char *s2);
int main(int argc, char *argv[])
{
int enter_err = -1;
while (1)
{
printf("<music #> ");
char enter[SCANF_BUFF] = { '\0' };
enter_err = m_enter_scanf(enter, SCANF_BUFF);
if(enter_err == 0){
if (strlen(enter) > 0) {
if ( m_strcmpi("exit", enter) != 0 && m_strcmpi("quit", enter) != 0) {
printf_s("输入的内容是:%s\n", enter);
}
else { //在控制台输入exit或quit时退出
break;
}
}
}
else {
if (enter_err > 0) {
printf("你输入的内容太多!\n");
}
else {
printf("未知错误码!");
break;
}
}
}
return 0;
}