Не работает программа при запуске через NetBeans и Eclipse - C (СИ)

Узнай цену своей работы

Формулировка задачи:

При запуске программы через NetBeans и Eclipse выскакивает окошко "Прекращена работа программы...". Тем не менее, через Dev C++, CodeBlocks, Geany всё работает. Подскажите, пожалуйста, что нужно исправить.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
char* modifyStr(char*, char*);
 
int main() {
    char *str1 = "I   am  sure the grapes are sour  ", *str0 = (char *)malloc(sizeof(str1));
        
        puts(modifyStr(str1, str0));
        
    return 0;
}
 
/*функция копирует начальную строку, удаляет из строки-копии пробелы и 
преобразует все буквы в нижний регистр*/
char* modifyStr(char* str1, char* str) {
    int i = 0, j;
 
    strcpy(str, str1);
 
    for( ; str[i] != '\0'; i++ ) {
        if(str[i]!= ' ') continue;
        for(j = i; str[j] != '\0' ; j++)
            str[j] = str[j + 1];
        i--;
    }
    for( i = 0; str[i] != '\0'; i++)
        str[i] = tolower(str[i]);
 
    return str;
}

Решение задачи: «Не работает программа при запуске через NetBeans и Eclipse»

textual
Листинг программы
*str0 = (char *)malloc((strlen(str1)+1) * sizeof(char));

Объяснение кода листинга программы

  1. В этом коде выделяется память под строку с помощью функции malloc.
  2. Значение функции malloc сохраняется в переменной типа char под названием str0.
  3. В скобках у функции malloc указывается размер памяти, который должен быть выделен.
  4. Размер памяти равен произведению strlen(str1) на размер одного символа (sizeof(char)).
  5. В данном случае str1 - это строка, для которой выделяется память.
  6. Размер памяти вычисляется с учетом символа '\0' в конце строки, поэтому к strlen(str1) добавляется единица.
  7. После выделения памяти, в новую строку копируются символы из str1 с помощью функции strcpy.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.5 из 5
Похожие ответы