Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
2 / 2 / 0
Регистрация: 05.12.2015
Сообщений: 193

Как в Си перевести string в integer

21.06.2023, 23:07. Показов 3752. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим в строковом массиве содержится следующее:

"12.03.2000" или "24.12.2009"

Необходимо извлечь значение месяца, т.е. 03=>3 или 12 в приведенных примерах.
Затем требуется уменьшить значение на единицу (в примерах):
3-1=2
12-1=11

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

- - -

Напрашивается - извлечь значение месяца, сохранить его в новый временный строковый массив, затем применить к нему strtol().. Все верно?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.06.2023, 23:07
Ответы с готовыми решениями:

Как integer перевести в string
Как integer перевести в string??

Перевести из string в integer
... ... c:=copy(str2,n,k); If (pos('Wystawiam faktury VAT',str2))>0 then begin d:=0.77 end else begin d:=1;

Перевести строку string в тип integer
Чем можно в qt заменить команду которая находится в 3 строке?Эта команда позволяет переводить строку string в тип integer. QString s...

53
 Аватар для analogov net
2532 / 1130 / 495
Регистрация: 17.11.2018
Сообщений: 2,840
27.06.2023, 16:50
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Наталья8 Посмотреть сообщение
У меня с математикой беда. В школе не научили...
Наталья8, а что у тебя не сходится?

Добавлено через 26 минут
Цитата Сообщение от easybudda Посмотреть сообщение
Вопрос дня: что будет, если дата задана, как
easybudda, ничего не будет. Как я понимаю, дата, сама по себе, ТС-у нафиг не нужна. Все, что ему нужно, это "выковырять" кусок строки между двумя точками в заданной строке, преобразовать в инт, потом уменьшить полученный результат на единицу и вернуть это значение в строковую переменную. Вот и весь фокус-мокус, как я понимаю...
Но это не точно...
1
 Аватар для Наталья8
638 / 396 / 68
Регистрация: 09.03.2016
Сообщений: 4,371
27.06.2023, 18:59
Цитата Сообщение от analogov net Посмотреть сообщение
Наталья8, а что у тебя не сходится?
Да мне проще использовать фунцию...
Пересчитывать коды как то напряжно.

Добавлено через 26 минут
Я пронимаю это всё
C++
1
2
3
4
5
6
int _tmain()
{
    printf("%d", '5'-'0');// Будет пять десятичная
    getchar();
    return 0;
}
1
 Аватар для analogov net
2532 / 1130 / 495
Регистрация: 17.11.2018
Сообщений: 2,840
27.06.2023, 19:04
Цитата Сообщение от Наталья8 Посмотреть сообщение
Да мне проще использовать фунцию...
Пересчитывать коды как то напряжно.
Понял, это тоже вариант.

Добавлено через 1 минуту
Цитата Сообщение от Наталья8 Посмотреть сообщение
Будет пять десятичная
0
 Аватар для Наталья8
638 / 396 / 68
Регистрация: 09.03.2016
Сообщений: 4,371
28.06.2023, 02:08
analogov net,
Ваши решения узко специализированы.
Не универсальны.
В реальности всё сложнее.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// Декреминировать номер папки в пути...       
      do{// Если видео нету, то ещё раз уменьшить номер папки...
            *(wcsrchr(running_parameter, L'\\')) = '\0'; // 
            wchar_t *w_num = wcsrchr(running_parameter, L'p') + 1;
            int inum = _wtoi(w_num); if (inum)inum--;
            if (inum)swprintf(w_num, L"%d", inum);
            else *w_num = L'\0';
            wcscat(running_parameter, L"\\TarGet.avi");
        } while (_waccess(running_parameter, 0) != 0);
 
     //freopen("CONOUT$", "w", stdout);// Вывод сообщения на консоль 
     //wprintf(L"%s", running_parameter);
ShellExecute(NULL, L"open", restart, running_parameter, NULL, SW_SHOWDEFAULT);
Добавлено через 42 секунды
Я у себя вырезал кусочек кода...
Если делать по вашей концепции, сложновато получиться...
0
 Аватар для Наталья8
638 / 396 / 68
Регистрация: 09.03.2016
Сообщений: 4,371
28.06.2023, 02:10
Название: NewPicture22.png
Просмотров: 103

Размер: 5.1 Кб
0
 Аватар для Наталья8
638 / 396 / 68
Регистрация: 09.03.2016
Сообщений: 4,371
28.06.2023, 02:27
Номера папок с разным количеством цифер....
И всё в широких строках...

Добавлено через 14 минут
Это открывать обработчик-микшер с видео из каждой папки по очереди...
0
 Аватар для analogov net
2532 / 1130 / 495
Регистрация: 17.11.2018
Сообщений: 2,840
28.06.2023, 08:16
Цитата Сообщение от Наталья8 Посмотреть сообщение
Не универсальны.
Конечно. Это решение только лишь для задания ТС-а, не более...
0
 Аватар для volodin661
7156 / 2344 / 354
Регистрация: 10.12.2013
Сообщений: 8,128
28.06.2023, 11:21
в каком календаре ?

что будет, если вычесть месяц из 01-01-0001 ?

тебе из компьютера скажут, что это неправильно.

получается, какой-то итальянский поп зарешал что правильно, а что неправильно ?

а на Тайване сохранился календарь Миньго.
0
 Аватар для Наталья8
638 / 396 / 68
Регистрация: 09.03.2016
Сообщений: 4,371
29.06.2023, 03:34
Цитата Сообщение от volodin661 Посмотреть сообщение
итальянский поп
0
29.06.2023, 03:42

Не по теме:

Поп ворует...
А Какие вы, такой вам и поп.

0
2 / 2 / 0
Регистрация: 05.12.2015
Сообщений: 193
10.07.2023, 22:06  [ТС]
Оригинальный вопрос этой ветки давно решен, но чтобы не плодить много новых задам похожий вопрос здесь же.

В оригинале мне советовали что-то типа:

C
1
2
3
4
5
    int to_day_int                                = to_day;
    int to_month_int                            = to_month;
    int to_year_int                               = to_year;
 
    sscanf(date_end, "%2d.%2d.%4d", &to_day_int, &to_month_int, &to_year_int);

В другом случае мне нужны значения в строковом формате.
Проверил следующий вариант в двух версиях, обе работают:

C
1
2
3
4
5
6
7
8
9
10
11
    char from_day_str[10];
    char from_month_str[10];
    char from_year_str[10];
 
 
//  sscanf(date_start, "%2s.%2s.%4s", &from_day_str, &from_month_str, &from_year_str);
    sscanf(date_start, "%2s.%2s.%4s", from_day_str, from_month_str, from_year_str);
 
    printf("\n from_day_str   =    %s", from_day_str);
    printf("\n from_month_str =    %s", from_month_str);
    printf("\n from_year_str  =    %s", from_year_str);
Т.е. нормально работают обе версии - с '&' и без них. Как правильно?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12844 / 7593 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
10.07.2023, 23:19
Цитата Сообщение от atztek Посмотреть сообщение
Т.е. нормально работают обе версии - с '&' и без них. Как правильно?
В любом случае требуется адрес в памяти, в который Вы читаете значения. Но! В первом случае Вы читаете числа. Память, в которую Вы их читаете, была зарезервирована при объявлении переменных. В вашем примере это
Цитата Сообщение от atztek Посмотреть сообщение
C
1
2
3
    int to_day_int                                = to_day;
    int to_month_int                            = to_month;
    int to_year_int                               = to_year;
В scanf требуется передавать адреса этой памяти, то есть ставить & перед ними.
С массивами всё несколько иначе. Имя массива можно считать указателем на его первый элемент. На самом деле всё сложнее, но в детали пока можно не вдаваться. Просто запомните, что при передаче в scanf массивов для чтения в них строк, указывать перед их именами & не нужно.
1
 Аватар для analogov net
2532 / 1130 / 495
Регистрация: 17.11.2018
Сообщений: 2,840
10.07.2023, 23:49
Цитата Сообщение от easybudda Посмотреть сообщение
Но! В первом случае Вы читаете числа.
Мне кажется( но это не точно ), что ТС не это имел ввиду. А то, что у него "нормально работают" 6 и 7 строки кода.
Цитата Сообщение от atztek Посмотреть сообщение
Как правильно?
1
2 / 2 / 0
Регистрация: 05.12.2015
Сообщений: 193
10.07.2023, 23:53  [ТС]
Цитата Сообщение от analogov net Посмотреть сообщение
Мне кажется( но это не точно ), что ТС не это имел ввиду. А то, что у него "нормально работают" 6 и 7 строки кода.
Вопрос был про строки 6 и 7 - обе работают с одинаковым результатом.
Но мне показалось что easybudda это и имел в виду?
0
 Аватар для analogov net
2532 / 1130 / 495
Регистрация: 17.11.2018
Сообщений: 2,840
10.07.2023, 23:56
Цитата Сообщение от atztek Посмотреть сообщение
Но мне показалось что easybudda это и имел в виду?
atztek, а где у тебя числа в этих строках?
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12844 / 7593 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
11.07.2023, 00:10
analogov net, я пытался объяснить, когда & действительно нужен. По этому и начал с чтения чисел.
1
 Аватар для analogov net
2532 / 1130 / 495
Регистрация: 17.11.2018
Сообщений: 2,840
11.07.2023, 00:15
easybudda, это я понял. Но ТС спрашивает почему 6 и 7 строка одинаково работают. Безотносительно к целым числам...

Добавлено через 1 минуту
ведь в обоих случаях там массивы...
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12844 / 7593 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
11.07.2023, 00:27
Цитата Сообщение от analogov net Посмотреть сообщение
Но ТС спрашивает почему 6 и 7 строка одинаково работают.
Ну как сказать "одинаково"... Приличный компилятор, как минимум, предупреждение выдаёт.
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main(void) {
    char buf[BUFSIZ];
    
    scanf("%s", &buf);
    printf("%s", buf);
 
    return 0;
}
Code
1
2
3
4
5
6
[andrew@centandrew string]$ gcc -Wall wrong_buf.c 
wrong_buf.c: В функции «main»:
wrong_buf.c:6:5: предупреждение: format «%s» expects argument of type «char *», but argument 2 has type «char (*)[8192]» [-Wformat=]
     scanf("%s", &buf);
     ^
[andrew@centandrew string]$
Но если его не замечать, то можно сказать, работает... По чистой случайности.
Code
1
2
3
[andrew@centandrew string]$ ./a.out 
blahblahblah
blahblahblah[andrew@centandrew string]$
2
2 / 2 / 0
Регистрация: 05.12.2015
Сообщений: 193
11.07.2023, 00:28  [ТС]
Цитата Сообщение от analogov net Посмотреть сообщение
а где у тебя числа в этих строках?
В данном случае действительно речь о строковых массивах, но строки 6 и 7 выдавали одинаковый результат.
0
 Аватар для analogov net
2532 / 1130 / 495
Регистрация: 17.11.2018
Сообщений: 2,840
11.07.2023, 00:31
Цитата Сообщение от atztek Посмотреть сообщение
но строки 6 и 7 выдавали одинаковый результат.
easybudda, уже ответил...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.07.2023, 00:31

Перевести не целое число string в integer
Доброго времени суток, такая проблема, копирую с сайта числа , но они не целые (к примеру : 0.25) , мне нужно всех их сложить , но ведь для...

Как перевести числа с "String" в "integer" или "Real"?
как перевести числа с &quot;String&quot; в &quot;integer&quot; или &quot;Real&quot;?

Написать программу, содержащую функцию getInt(name:string; k:integer):integer
Ребята, помогите пожалуйста с задачей! Написать программу, содержащую функцию getInt(name:string; k:integer):integer; возвращающую k-ый...

Сформировать запись, имеющую следующую структуру type пассажир=record фамилия:string; имя:string; номер рейса:string; количество вещей:integer; общий
Сформировать запись, имеющую следующую структуру type пассажир=record фамилия:string; имя:string; номер рейса:string; количество...

Как string присвоить String? И как из string перевести в char[]?
Как string присвоить String? И как из string перевести в char?


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru