Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
0 / 0 / 1
Регистрация: 22.05.2017
Сообщений: 16

Подскажите как добавить нулевой символ через strlen в си

14.06.2017, 02:15. Показов 5577. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
void shifr()
{
    FILE *f1;
    system("cls");
    fflush(stdin);
    char* str1 = new char[100];
    char* str2 = new char[100];
    f1 = fopen("D:\\f1.txt", "r");
 
    fgets(str1, 100, f1);
    fclose(f1);
 
    puts(str1);
 
    _getch();
    int flag;
    while (strlen(str1)<strlen(str2)) {
        for (int i = 0, j = 0; i<strlen(str1), j<strlen(str2); i++, j++)
        {
            if (*(str1 + i) != 'А'&*(str1 + i) != 'а') {
 
                if ((*(str1 + i)) >= 'Б' && (*(str1 + i)) < 'я') 
 
                    *(str2 + j) = ((char)((int)*(str1 + i)) - 1);
                    strlen(str1)+1 =NULL;
                if (*(str1 + i)>'я')
                    flag = 1;
            }
        };
    
 
        if (!flag) 
        f1 = fopen("D:\\f1.txt", "w");
        fprintf(f1, "%c", str2);
        printf_s("zashifr stroka:\n");
        puts(str2);
        fputs(str2, f1);
        fclose(f1);
        /*  delete str1;
        delete str2;*/
        _getch();
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.06.2017, 02:15
Ответы с готовыми решениями:

Последний символ строки (strlen и substr)
Есть код, который записывает в файл количество посещений данной страницы. При каждом десятом посещении выводится некоторое сообщение. По...

Строка: Как удалить начальный символ в строке и добавить тот же символ (который удалили) в конец строки?
Как удалить начальный символ в строке и добавить тот же символ (который удалили) в конец строки? Т.е есть строка 1234567890 из нее...

Функция strlen() на русской раскладке считает один символ за 2
Объясните пожалуйста почему функция &quot;strlen()&quot; считает очень странным образом пишешь Английскими буквами считает правильно, перехожу на...

13
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
14.06.2017, 02:20
Цитата Сообщение от mrprogt Посмотреть сообщение
лулевой символ
лул

Кинули код, в котором смесь Си + C++, но не сказали что с этим кодом делать и какая у Вас проблема...
Само название темы, как минимум, неправильно сформулировано и неясно с чем помогать.
0
 Аватар для TButton
290 / 87 / 28
Регистрация: 25.01.2016
Сообщений: 529
Записей в блоге: 1
14.06.2017, 02:41
Цитата Сообщение от mrprogt Посмотреть сообщение
лулевой символ
Нулевой символ есть $, а с чем помогать далее не имею понятия.
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
14.06.2017, 03:08
C
1
strlen(str1)+1 =NULL;
всё ясно
1
0 / 0 / 1
Регистрация: 22.05.2017
Сообщений: 16
14.06.2017, 09:54  [ТС]
strlen(str1)+1 =NULL;

запусти код
ошибку бьет в этой строке

это не с++ этот код в си
к масиву str2 нужно добавить Null потому как при вывод захватывает мусор
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
14.06.2017, 10:22
Длина Си-строки определяется по достижению нулевого символа — нуль терминатор. Функция strlen видит начало Си-строки и начинает сначала считать количество символов (байтов, отводимых под каждый символ), этот процесс выполняется до тех пор, пока не будет достигнут завершающий нулевой символ. Обратите внимание на то, что завершающий нулевой символ не входит в длину строки. Он является служебным символом, для обозначения завершения Си-строки.


Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cstring>                        // для strlen
 
int main()
{
  char input[256];
  std::cout << "Введите строку: ";
  std::cin >> input;
  std::cout << "Строка " << input << " содержит " << strlen(input) << " символов\n";
  return 0;
}
Добавлено через 2 минуты
Для того что бы добавлять в конец строки можно воспользоваться
C++
1
strcat(str, "Hello");
0
0 / 0 / 1
Регистрация: 22.05.2017
Сообщений: 16
14.06.2017, 10:25  [ТС]
может так попробовать????
C
1
str2 = NULL+ strlen(str1)
Добавлено через 2 минуты
точно можно попробовать приклеить к самому массиву а не к его длине
сейчас попробую
0
23 / 23 / 6
Регистрация: 23.03.2013
Сообщений: 245
14.06.2017, 10:26

Не по теме:

Мне одному кажется что тс тролль какой-то, или реально не понимает?)



если в строке нет "нулевого символа" то strlen скорее всего вылетит с ошибкой


да и код почти не читаемый какой-то

хоть бы написали что должен делать код)))
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
14.06.2017, 10:31
Цитата Сообщение от mrprogt Посмотреть сообщение
точно можно попробовать приклеить к самому массиву а не к его длине
сейчас попробую
Ага почитай что такое Конкатенация строк
0
0 / 0 / 1
Регистрация: 22.05.2017
Сообщений: 16
14.06.2017, 10:39  [ТС]
код перегоняет один массив str1 во второй со смещением на -1 символ по алфавиту за исключением буквы "а" и "А"
потом мы это записываем в файл txt полученную измененную строку str2

Добавлено через 6 минут
Конкатенация строк, а точнее добавление одной строки в конец другой
ты имеешь ввиду нулевой символ обозначить как отдельный массив и склеить с полученным массивом??
0
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
14.06.2017, 11:12
C++
1
2
3
char* str1 = new char[100];
 char* str2 = new char[100];
    strcpy(str2,"\0");
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
14.06.2017, 11:19
Цитата Сообщение от mrprogt Посмотреть сообщение
это не с++ этот код в си
Наличие тегов С на форуме ещё не делает данный код написанным на Си. Это С++, сишный компилятор не умеет работать с операторами new[], например.

Добавлено через 34 секунды
И си у нас в другом разделе. Если вам нужно решение на Си, то я перенесу тему.
0
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
14.06.2017, 11:20
Лучший ответ Сообщение было отмечено mrprogt как решение

Решение

C++
1
2
3
char* str1 = new char[100];
 char* str2 = new char[100];    
   strlen( strcpy(str2,"\0"));
1
0 / 0 / 1
Регистрация: 22.05.2017
Сообщений: 16
15.06.2017, 01:05  [ТС]
большое спасибо
все заработало

Добавлено через 15 секунд
большое спасибо
все заработало
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.06.2017, 01:05
Помогаю со студенческими работами здесь

Почему в коде записано strlen()+1 вместо strlen()
здравствуйте. объясните пожалуйста. почему для выделения места на основе размера уже существующей строки используется значение...

Нулевой символ С++
Является ли нулевой символ в конце строки &quot;\0&quot; ложью?

Подскажите функцию, которая возвращает длину строки (string), strlen не подходит.
Подскажите функцию, которая возвращает длину строки (string), strlen не подходит!!!!!!

Нулевой символ строки
Есть две строки a и b (тип ansistring). У меня программа выкыдывает ошыбку когда есть условие a=b. Нумерация символов в стоке...

Вставить нулевой символ в строку
Добрый вечер. Сам незнаю как это должно выглядить но мне нужно вставить в начало строки нулевой символ (0x00) как это можно сделать?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru