int main() {
char str1[21];
char str2[21];
char l_str1[21];
char l_str2[21];
printf("Please enter the first word: ");
scanf("%s", str1);
printf("Please enter the second word: ");
scanf("%s", str2);
Lowercase_Strings(str1, l_str1);
Lowercase_Strings(str2, l_str2);
printf("Lowercase string 1: %s", l_str1);
printf("Lowercase string 2: %s", l_str2);
// Converts original strings to lower case, keeping original string unchanged
void Lowercase_Strings(char str[21], char l_str[21]) {
char c;
int i;
for(i = 0; i < strlen(str); ++i) {
c = str[i];
l_str[i] = tolower(c);
}
}
Эй, ребята, девочки! Новое здесь, так что если что-то не так, как я отформатировал это, я бы не возражал против критики.Почему моя функция искажает только один из моих массивов символов?
Это фрагмент из моей программы, чтобы проверить, являются ли две строки анаграммами друг друга, без учета регистра.
Однако l_str1
массив всегда заканчивается «испорчены» каким-то образом по сравнению с l_str2
массива, независимо от порядка вызова Lowercase_Strings
или строк, назначенных либо массив.
Например, str1 = "MARY"
и str2 = "ARMY"
приведут к l_str2 = "army"
, но l_str1 = "mary"
с 2 случайными символами в конце.
Если у кого-то есть идея, что происходит, то это будет оценено.
Вы забыли, что все строки в С, * прекращаются * по специальному символу ' '\ 0''. –
Глупая ошибка, спасибо большое! – josephdt12