неправильный вывод в программе на C
не понимаю как работают указатели, вот в программе например выбивает нарушение права доступа, если их применяю, а без них просто выводит непонятно что
ошибка возникает в последнем цикле for, при обращении к masr[i] в блоке if
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int str_convert(char* s, char parts[100][256]) {
int r = 0;
while (*s) {
if (*s != ' ') {
char* ptr = parts[r++];
do {
*(ptr++) = *(s++);
} while (*s && *s != ' ');
*ptr = '\0';
}
else
s++;
}
return r;
}
int my_strcmp(char* s1, char* s2) {
while ((*s1 != 0) && (*s1 == *s2)) {
s1++;
s2++;
}
return *s1 - *s2;
}
char reducted[][100] = {"etc.", "i.e.", "vs.", "e.g."};
char transcript[][100] = {"et cetera", "id est", "versus", "exempli gratia"};
int main() {
char masr = (char) malloc(1024 * sizeof(char*));
char *str = NULL;
str = (char*) malloc(1024 *sizeof(char));
printf("input string: ");
char c;
int z = 0;
while ((c = getchar()) != '\n' && z < 99)
{
str[z] = c;
z++;
}
str[z] = '\0';
int size = strlen(str);
int arrLen = str_convert(str, masr);
for (int i = 0; i < arrLen; i++) {
masr[i] = (char*)malloc(1024 * sizeof(char));
int isPrinted = 0;
for (int j = 0; j < 4; j++) {
if (my_strcmp(reducted[j], masr[i]) == 0) {
printf("%s ", transcript[j]);
isPrinted = 1;
}
}
free(masr[i]);
if (!isPrinted) printf("%s ", masr[i]);
}
return 0;
}