Код с обработкой строк. Нужна помощь,ибо препод - не очень!

Ребята,у меня задача: ввести строку,к примеру «Bill,Gates» и,чтобы программа вывела мне преобразованную строку «Gates,Bill».Но если ты вводишь строчку «end»,программа завершается. Я решил чисто проверить,как оно сохраняет строчку,и вот пример этой нерабочей программы. Эта программа выводит ересь какую то. Прошарился по форумах,прочитал много о строках,но о обработке строк так ничего и не нашел. Помогите и,если можно,объясните. Христос Воскрес.

#define N 20
#define stop "end"


int main(){
    char mass[N],mass1[N];
    int i=0;

for(i=0;;i++){
    gets_s(mass);
    if(strcmp(mass,stop)==0){
        break;}
    if(mass[i]!=','){
        mass1[i]=mass[i];}
    else{break;}}
printf("%s",mass1);

Прошарился по форумах,прочитал много о строках,но о обработке строк так ничего и не нашел.

Позвольте не поверить. Банальный запрос «обработка строк си» в гугле дает очень приличный результат. Плюс книги, начиная с Кернигана и Ричи и до наших дней. Книги даже будут полезней, поскольку помогут вам не только узнать про строки, но и про то, как вообще писать программы на С. Ваша программа демонстрирует полное незнание и непонимание.

Тогда подскажите пожалуйста,почему после прогона первой строки,программа автоматически закрывается ?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#define N 20
#define stop "end"


int main(){
    char mass[N],mass1[N];
    int i=0;

for(i=0;;i++){
    gets_s(mass);
    if(strcmp(mass,stop)==0){
        break;}
    for (int i = 0;; i++){ 
    if (mass[i] == ','){ 
    mass1[i] = '\0'; 
    break;} 
    mass1[i] = mass[i]; 
} 
for (int i = 0; mass1[i] != '\0'; i++){ 
printf("%c", mass1[i]);
}}








system("pause");
return 0;
}

Если первая строка не содержит символа «,», во втором цикле происходит выход за границы массивов, возбуждается исключение, которое не обрабатывается, в результате чего программа аварийно завершается.

К аналогичному результату приведет ввод строки длиннее 19 символов. Только в этом случае программа грохнется в gets_s(mass).

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.