Буду честным, я полный новичок в c. Таким образом, такие вещи, как malloc и realloc, представляют собой чужие концепции. Я думаю, что у меня есть основы, но я просто не могу получить 100%.Использование строк и Malloc/Realloc
while (int args = scanf("%s", string)) {
if (args < 0) break;
count++;
if (array == NULL) {
array = (char *) malloc(strlen(string));
if (array == NULL) {
printf("Error allocating memory");
exit(1);
}
} else {
printf("%s %d\n", string, strlen(string));
array = (char *) realloc(array, (sizeof(array) + strlen(string) + 1));
if (array == NULL) {
printf("Error allocating memory");
free(array);
exit(1);
}
printf("%lu\n", sizeof(array));
}
strcpy(&array[count - 1], string);
}
It is reading from terminal - cat file | ./program и представляет собой просто кучу слов произвольной длины. Я пытаюсь собрать их все в массив (массив).
Edit: я должен mentino, что я, видимо, пытается получить доступ к памяти я не выделил: malloc: *** error for object 0x7fe9e04039a0: incorrect checksum for freed object - object was probably modified after being freed. *** set a breakpoint in malloc_error_break to debug Segmentation fault: 11
' while (int args = scanf ("% s", string)) 'это действительно компилируется в вашей системе? – ouah
Да, как бы вы порекомендовали это сделать? –
Я бы сначала рекомендовал использовать компилятор C для компиляции C, вы, вероятно, используете компилятор C++. – ouah