Я пытаюсь написать простую программу, которая считывает введенные пользователем строки в массив указателей. Чтение идет хорошо, однако, когда я хочу добавить дополнительный параметр к моему методу, чтобы сохранить количество строк, которые я действительно читаю, он перестает работать. Компилятор не очень полезен, поэтому я решил взять свою проблему здесь.C Чтение введенных пользователем данных
Фактический код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void read(char**, int *);
void write(char**);
int main() {
int amount = 0;
int * amount_p = &amount;
char *pt_p[1000];
read(pt_p,amount_p);
write(pt_p);
}
void read(char ** pt, int * amount) {
char stop[] = "STOP";
char* woord;
int i = 0;
printf("Enter a word: ");
scanf("%70s", woord);
pt[i] = malloc(sizeof(char)*(strlen(woord)+1));
pt[i] = strcpy(pt[i], woord);
i++;
while(strcmp(stop,pt[i-1]) != 0) {
printf("Enter a word: ");
scanf("%70s", woord);
pt[i] = malloc((strlen(woord)+1)*sizeof(char));
pt[i] = strcpy(pt[i], woord);
i++;
}
*amount = i;
}
void write(char ** pt) {
int i = 0;
char stop[] = "STOP";
while(strcmp(stop,pt[i]) != 0) {
printf("pt[%d]-> %s",i,pt[i]);
printf("X \n");
i++;
}
}
'char * woord;' -> 'char woord [71];' – BLUEPIXY
Спасибо! Кажется, это исправить. Однако я не понимаю, почему. Когда я указываю char * woord, это не значит, что я могу ввести столько символов, сколько мне нравится, поскольку размер строки еще не определен. Потому что позже я просто выделил длину слова, чтобы зарезервировать достаточно места в pt [i]. Может ли быть так, что место памяти в памяти неизвестно? – Actaeonis
Требуется область для хранения персонажа. – BLUEPIXY