我想知道为什么我不能在函数中将我的所有字母都转换成小写。 我尝试在“ if”之前打印字符串,并且它可以正常工作,所以我不明白为什么我不能这样做:
string[i] = string[i] - 'A' + 'a';
这是我的功能:
bool is_string_in_array(char * strings[], int n, char * string) {
for (int i=0;i<strlen(string);i++) {
printf("%c\n",string[i]);
if (string[i] >= 'A' && string[i] <= 'Z') {
string[i] = string[i] - 'A' + 'a';
}
}
for (int i = 0; i < n; i++) {
if (strcmp(strings[i], string) == 0){
return true;
}
}
return false;
}
而且我不能使用tolower()函数... 我打电话给:
char *test ={"DOG"};
is_string_in_array(banned_words,n,test);
谢谢您的时间
答案 0 :(得分:1)
#include <stdio.h>
#include <stdlib.h>
void low_case_string(char * string);
int main()
{
char str[]="TESTING";
low_case_string(str);
return 0;
}
void low_case_string(char * string)
{
for (int i=0; i<strlen(string); i++)
{
if (string[i] >= 'A' && string[i] <= 'Z')
{
string[i] = string[i] - 'A' + 'a';
}
printf("%c\n",string[i]);
}
}
它确实以您编写代码的方式工作,但是您在未进行任何更改之前就打印了结果。我不确定这是否是您要的