Замена букв в строке на заглавные - C (СИ) (149676)
Формулировка задачи:
Помогите пожалуйста разобраться.
написать программу, которая по введённой строке создаёт новую и заменяет все символы на символы в верхнем регистре, а для следующих символовделает такую замену:
• 'a', 'A' → '4'
• 'b', 'B' → '8'
• 'e', 'E' → '3'
• 'i', 'I' → '1'
• 'o',
'O' → '0'
• 's', 'S' → '5'
Для замены использовать таблицы.
Пример:
This stuff really works
TH15 5TUFF R34LLY W0RK5.
код:
при компиляции выдает
как исправить ?
#include <stdio.h>
#include <string.h>
#include <ctype.h>
const char* TABLE[] = { "ABEIOS", "483105" };
int main(void) {
char *a;
char str[1000], *ptr;
printf("%s\n", "Введите строку:");
for ( ptr = str; ptr; ++ptr ) {
*ptr = toupper(*ptr);
if ( a = strchr(TABLE[0], *ptr));
*ptr = (TABLE[1][a - TABLE[0]]);
}
printf("%s\n", str);
}2.c: In function ‘main’:
2.c:15:6: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
if ( a = strchr(TABLE[0], *ptr));
^Решение задачи: «Замена букв в строке на заглавные»
textual
Листинг программы
if ( ( a = strchr(TABLE[0], *ptr) ) != NULL )
Объяснение кода листинга программы
- В данном коде используется функция
strchr, которая ищет первое вхождение символа в строке. - Переменная
aиспользуется для хранения указателя на найденный символ. - Если функция
strchrвернула неNULL(то есть нашла символ), то значение переменнойaбудет равноNULLплюс указатель на найденный символ. - Значение переменной
ptrиспользуется как аргумент для функцииstrchr. - Переменная
TABLE[0]представляет собой строку, в которой происходит поиск. - Если символ, на который указывает
ptr, найден в строкеTABLE[0], то переменнаяaбудет содержать указатель на этот символ. - Если символ не найден, то переменная
aбудет равнаNULL.