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

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

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

При запуске программы через NetBeans и Eclipse выскакивает окошко "Прекращена работа программы...". Тем не менее, через Dev C++, CodeBlocks, Geany всё работает. Подскажите, пожалуйста, что нужно исправить.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5. char* modifyStr(char*, char*);
  6. int main() {
  7. char *str1 = "I am sure the grapes are sour ", *str0 = (char *)malloc(sizeof(str1));
  8. puts(modifyStr(str1, str0));
  9. return 0;
  10. }
  11. /*функция копирует начальную строку, удаляет из строки-копии пробелы и
  12. преобразует все буквы в нижний регистр*/
  13. char* modifyStr(char* str1, char* str) {
  14. int i = 0, j;
  15. strcpy(str, str1);
  16. for( ; str[i] != '\0'; i++ ) {
  17. if(str[i]!= ' ') continue;
  18. for(j = i; str[j] != '\0' ; j++)
  19. str[j] = str[j + 1];
  20. i--;
  21. }
  22. for( i = 0; str[i] != '\0'; i++)
  23. str[i] = tolower(str[i]);
  24. return str;
  25. }

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

textual
Листинг программы
  1. *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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы