=========================fscanf (код) не всегда сбой памяти, но иногда
код (имя файла теста .c)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, char * argv[]) {
int i=0, num=atoi(argv[1]);
char **arr=(char**)malloc(num*sizeof(char*));
FILE *fp = fopen("test.txt","r");
if(arr == NULL) { printf("out of memory\n"); exit(1); }
if(fp == NULL) { printf("cannot open the file \n"); exit(1); }
for(i=0; i< num; i++) fscanf(fp,"%s", arr+i); // HERE
printf("%s\n", arr+num-1);
fclose(fp);
free(arr);
return 0;
}
========
test.txt
watermelon
grape
strawberries
orange
peach
banana
mango
cherry
pineapple
apple
blueberry
raspberry
pear
melon
greengrapes
tangerine
kiwifruit
pomegranate
plum
nectarine
========
Вопрос
когда я excuted ниже в несколько раз
test 1
test 2
...
...
test 7
test 8
он крушит часто что-то вроде «дамп», но работает, как я ожидал.
Однако, когда я типа выше, чем 9, он никогда не раздавить ...
test 9
test 10
...
что делает этот сбой кода?
FYI: Если ваш код действительно раздавил что-то, вам будет намного больше беспокоиться. Слово, которое вы хотите, - _crash_;) – szczurcio
Я сожалею о раздавлении, я имел в виду авария, –
@alexparkjw Тогда почему вы не исправились? –