Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2023, 12:38   #1
Sizbiy
 
Регистрация: 15.12.2022
Сообщений: 6
Подмигивание Язык Си, вывод строк

Здравствуйте, помогите пожалуйста в написании програмки по заданию, и уточнению ошибок.
С помощью какой функции лучше выполнить это задание?

Ошибки:
1. ошибка, по выводу количества символов, с помощью sizeof ;
2. выводимые символы , хотя есть setlocale(LC_ALL, "") ;
3. реализация проверки, что строка должна быть больше 20 символов ;
4. замена символа

Задание 1.
Составить программу, в которой вводится строка (не менее 20 символов, осмысленная, содержащая строчные и прописные буквы и цифры, которые могут быть изменены по заданию).
Выводится копия строки, в которой: все строчные буквы поменять на прописные, заменить букву "к" на "т" (с учетом регистра).

Код:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <ctype.h>
#include <string.h>

int main()
{
    setlocale(LC_ALL, "");
    int  a, n=20;
    char k='к', t='т', str[n];

    printf("Введите строку: \n");

    scanf("%s", str);
    a=sizeof(str);
    printf("%d\n", a);
    if (a > n) printf("%s", str);
    else printf("Строка меньше 20 символов.");

    return 0;
}
З.Ы. Я пишу задание в IDE CodeBlocks, прикрепил консольное меню вывода и лекцию, которую мне скинул преподаватель, может вы дорогие форумчане сможете меня тыкнуть, куда именно смотреть. Влияет ли, что я пишу её на флешке?
Изображения
Тип файла: png 9_1.PNG (5.3 Кб, 26 просмотров)
Вложения
Тип файла: pdf Л8_ОАП_ГИ.pdf (247.9 Кб, 6 просмотров)
Sizbiy вне форума Ответить с цитированием
Старый 08.01.2023, 12:47   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 736
По умолчанию

Строка не менее 20 символов по условию, но Вы можете сохранить только 19 символов максимум.

Вам дали хорошую методичку, ее нужно прочитать(Внимательно!) и осознать. Возможно даже несколько раз. И пишите программки.

setlocale(LC_ALL, "Rus"); надо писать.

Последний раз редактировалось BDA; 09.01.2023 в 13:07.
Cuprum5 вне форума Ответить с цитированием
Старый 08.01.2023, 20:52   #3
Sizbiy
 
Регистрация: 15.12.2022
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Строка не менее 20 символов по условию, но Вы можете сохранить только 19 символов максимум, попробовал с помощью gets puts, все равно не локализуется, даже с Rus.
Попробовал с помощью puts gets, и с припиской Rus, но не работает

Код:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <ctype.h>
#include <string.h>
#define M 20

int main()
{
    setlocale(LC_ALL, "Rus");
    char str[M];

    printf("Введите строку: \n");
    gets(str);
    puts(str);

    return 0;

}
Изображения
Тип файла: png 1.PNG (5.9 Кб, 23 просмотров)
Sizbiy вне форума Ответить с цитированием
Старый 08.01.2023, 23:04   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

"Кракозябры" в заголовке формы имеют отношение к настройке консоли, а не к самой программе.
Обратите внимание, что кирилличный текс выводится нормально.

Правый клик в левом верхнем углу формы и далее ...
Поищите подсказку в Сети, как решить этот вопрос программно.
Вот тут есть пример: https://ru.stackoverflow.com/questio...язык-в-консоли

Возможно, что вы найдёте и другие советы.

PS: Называть каталоги и файлы с использованием кириллицы - это, так скажем, не очень.
Используйте латиницу и, по возможности, не используйте пробелы. Ставьте вместо пробелов знак нижнего подчёркивания или тире. Можно использовать верблюжью запись.
В Винде, точно, прописные и строчные не разделяются. Пример: PismaMoegoDruga.cpp
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 09.01.2023, 09:26   #5
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 736
По умолчанию

Цитата:
Сообщение от Sizbiy Посмотреть сообщение
Код:
#define M 20
- зачем заводить массив размером 20, если у Вас по условию не менее 20 символов должно быть в строке. Подумайте над числами 55 и 100. Строка должна заканчиваться нулем, т.е. +1 к размеру строки.
Cuprum5 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка строк, язык Си Oksanaaaaa Помощь студентам 0 15.03.2022 17:23
Ввод строк и вывод строк Cip Общие вопросы C/C++ 0 10.04.2015 18:12
ошибка сравнения строк, язык c OlegALL Общие вопросы C/C++ 1 05.10.2012 09:39
Инициализация массива строк Язык си Lana18 Помощь студентам 1 15.01.2012 22:13
Перевести с СИ++ на язык СИ (пару строк) DesignFootball.Ru Помощь студентам 17 07.11.2011 17:20