Не работает программа при запуске через 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));
Объяснение кода листинга программы
- В этом коде выделяется память под строку с помощью функции malloc.
- Значение функции malloc сохраняется в переменной типа char под названием str0.
- В скобках у функции malloc указывается размер памяти, который должен быть выделен.
- Размер памяти равен произведению strlen(str1) на размер одного символа (sizeof(char)).
- В данном случае str1 - это строка, для которой выделяется память.
- Размер памяти вычисляется с учетом символа '\0' в конце строки, поэтому к strlen(str1) добавляется единица.
- После выделения памяти, в новую строку копируются символы из str1 с помощью функции strcpy.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д