Разделить строку на две строки - C (СИ)
Формулировка задачи:
Скажите, пожалуйста, как можно одну строку разделить на две другие.
Например:
Я ввожу вещественное число : 0.1452E-2. Как мне теперь эту строку поделить на строку до точки, и на строку после точки? Чтоб получилось так 0. и 1452E-2.
printf("введите число с плавающей точкой по правилам Pascal: ");
scanf("%s", plavt);Решение задачи: «Разделить строку на две строки»
textual
Листинг программы
#include <stdio.h>
#define LIM 1001
int main()
{
char c;
char str1[LIM];
char str2[LIM];
int flag = 0;
int i, j, k;
i = j = k = 0;
while ((c = getchar()) != '\n' && i < LIM) {
if (c == '.') {
str1[j++] = c;
flag = 1;
}
else
if (!flag)
str1[j++] = c;
else
if (flag)
str2[k++] = c;
++i;
}
str1[j] = str2[k] = '\0';
puts(str1);
puts(str2);
return 0;
}
Объяснение кода листинга программы
В этом коде выполняется следующая задача:
- Разделение ввода пользователя на две строки, используя символ '.' в качестве разделителя.
- Если символ '.' не встречается, то вторая строка остается пустой.
- Код принимает во внимание возможность, что вторая строка может быть длиннее первой.
- Код не проверяет переполнение буфера, что является серьезной проблемой в программах, работающих с строками в C.
- Если вторая строка оказывается пустой, код может выдать неопределенное поведение.
- Код не содержит проверки на конец строки ('\0').
- Код не содержит обработки ошибок.
- Код не содержит выравнивания границ.
- Код не содержит использования функций для работы со строками, таких как strlen() или strcpy().
- Код не содержит комментариев.