#c
#c
Вопрос:
Я все еще новичок в программировании, и есть много вещей, которых я до сих пор не знаю, но я хотел бы спросить, почему мой оператор if, похоже, не работает должным образом. Кажется, значение strcmp(bookName, tolower(searchedName))
, когда переменная searchedName = "introduction to c"
не равна 0. Почему это?
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char bookName[30] = "introduction to c programming";
char searchedName[30];
printf("Enter the book you are searching for: ");
scanf("%s", amp;searchedName);
if (strcmp(bookName, tolower(searchedName)) != 0) {
printf("The book is not in elibrary");
} else {
printf("The book is in elibrary");
}
return 0;
}
Комментарии:
1. Включите предупреждения при сборке, и вам будет дана действительно большая подсказка или две.
2.
tolower(searchedName)
не следует компилировать.3. Подсказка: cplusplus.com/reference/cctype/tolower (Работает с одним персонажем …)
4. Вам не нужно
amp;
передsearchedName
.amp;
используется только тогда, когда вам нужен адрес примитивного типа.5. потому что «введение в программирование на c» — это не то же самое, что «введение в c»
Ответ №1:
tolower()
предназначено для преобразования символов, а не строк. Вам придется применять его к каждому символу в строке отдельно.- В этом случае вам не нужны
amp;
массивы before, потому что массивы в выражениях автоматически преобразуются в указатели (за исключением некоторых случаев). %s
inscanf()
остановится на пробельном символе.%[^n]
полезно читать до тех пор, пока не попадете на символ новой строки.
Попробуйте это:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char bookName[30] = "introduction to c programming";
char searchedName[30];
char searchedName_lower[30];
int i;
printf("Enter the book you are searching for: ");
scanf("%[^n]", searchedName);
i = 0;
do {
searchedName_lower[i] = tolower((unsigned char)searchedName[i]);
} while (searchedName[i ] != '');
if (strcmp(bookName, searchedName_lower) != 0) {
printf("The book is not in elibrary");
} else {
printf("The book is in elibrary");
}
return 0;
}