Ошибка этапа выполнения - C (СИ)
Формулировка задачи:
Недавно я начал писать функцию, разделяющую строку на две по заданному символу. Возможно, такая функция уже есть в библиотеке, для меня главное - практика. Намучился я с компиляцией, и в конце концов код получился таким:
Но эта программа не работает адекватно, и сразу крашится. Мне ясно, что сюда закралась ошибка, но где именно, я не могу понять. Помогите!
#include <stdio.h> #include <locale.h> void split(char *string, char *string1, char *string2, char *symbol); int main() { int num1; int num2; char string1[10]; char string2[10]; char string = "Некая строка"; split(string, string1, string2, ' '); printf(string2); setlocale(LC_ALL, ""); return 0; }; void split(char *string, char *string1, char *string2, char *symbol) { int a = 0; int i = 0; for ( i = 0; i < (sizeof(string) / sizeof(char)); ++i ) { if(string[i] == ' ' ) { while(a < (sizeof(string) / sizeof(char)) - i); { string1[a] = string[a]; a++; }; a = 0; while(a < (sizeof(string) / sizeof(char)) - i) - (sizeof(string) / sizeof(char)); { string2[a] = string[a]; }; }; }; };
Решение задачи: «Ошибка этапа выполнения»
textual
Листинг программы
#include <stdio.h> #include <locale.h> void split(char *string, char *string1, char *string2, char *symbol); int length(char *string); int main() { int num1; int num2; char string1[10]; char string2[10]; char string = "Некая строка"; split(string, string1, string2, ' '); printf(string2); setlocale(LC_ALL, ""); return 0; }; int length(char *string) { int i = 0; while(i == i) { if(string[i] == '\0') { break; } i++; }; return i; }; void split(char *string, char *string1, char *string2, char *symbol) { int a = 0; int i = 0; for ( i = 0; i < length(string); ++i ) { if(string[i] == ' ' ) { while(a < length(string) - i); { string1[a] = string[a]; a++; }; a = 0; while(a < ((length(string) - i) - length(string))); { string2[a] = string[a]; }; }; }; };
Объяснение кода листинга программы
- В функции split() происходит разделение строки на две части по заданному символу (в данном случае пробел).
- В функции length() подсчитывается длина строки.
- В функции main() создаются три строки (string1, string2, string) и инициализируются массивы.
- Вызывается функция split(), которая разделяет строку на две части и сохраняет их в string1 и string2.
- Выводится вторая часть (string2) с помощью функции printf().
- Устанавливается локальная настройка для вывода с помощью функции setlocale().
- Функция main() возвращает 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д