1
Программа попадает в бесконечный цикл. Но arr->count
printf
печатает нормальное значение (например, 4). count
имеет тип unsigned int
и arr
является указателем на int. В чем проблема? печатает цикл обр значения в первом, а затем продолжает печатать значения от TrashПочему существует бесконечная петля?
В arrat_get
печатает массив просто отлично
struct _arr {
size_t count;
int* arr;
} ;
typedef struct _arr array_t;
array_t* array_get(FILE* file){
int* arr = NULL;
size_t count = 0;
array_t* arr_t;
array_t temp;
int i = 0;
if (!file) {
fprintf(stderr, "there is no such file\n");
return;
}
if (fscanf(file, "%u", &count) == EOF) {
fprintf(stderr, "can't read count from file\n");
return;
}
temp = array_create(arr, count);
arr_t = &temp;
printf("%i\n", arr_t->count);
for (i = 0; i < arr_t->count; i++){
if (fscanf(file, "%d", &arr_t->arr[i]) == EOF) {
fprintf(stderr, "can't read arr from file\n");
return;
}
}
for (i = 0; i<arr_t->count; i++)
printf("%d ", arr_t->arr[i]);
printf("\n");
return arr_t;
}
int main(){
array_t* arr_t;
int i = 0;
printf("enter count and arr:\n");
arr_t = array_get(stdin);
printf("count in main=%u\n", arr_t->count);
for (i = 0; i<arr_t->count; i++)
printf("%d ", arr_t->arr[i]);
getch();
return 0;
}
обязательно .. смотреть .. код – amdixon
пожалуйста покажите код, который устанавливает это, в комплекте с определением типа вашей структуры. – dasblinkenlight
Вы действительно вызываете 'printf' только в теле цикла? Если вы делаете что-то более сложное, возможно, что ошибка «один за другим» изменяет значение 'i' и/или' arr_t-> count'. Попробуйте также напечатать 'i' и' arr_t-> count' внутри цикла, и все должно стать яснее. – user4815162342