Есть правильные ответы, но C не очень заботится о том, какой тип он хранит по какому адресу. Так что вы можете получить что-то вроде:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
char *arr;
int *iArr;
int main (void){
int i;
arr = malloc(100);
/* Error handling ommitted, yes that's evil */
iArr = (int*) arr;
for (i = 0; i < 25; i++) {
iArr[i] = rand() % INT_MAX;
}
for (i = 0; i < 25; i++) {
printf("iArr[%d] = %d\n", i, iArr[i]);
}
for (i = 0; i < 100; i++) {
printf("arr[%d] = %c\n", i, arr[i]);
}
free(arr);
return 0;
}
В конце концов, массив - это просто непрерывный блок в памяти. И вы можете интерпретировать это как хотите (если хотите). Если вы знаете, что sizeof (int) = 4 * sizeof (char), то приведенный выше код будет работать.
Я не говорю, что рекомендую это. А остальные указали на то, что бы ни случилось, первый цикл через все символы в TXT даст тот же результат. Можно подумать, например, о развертывании цикла, но на самом деле мне было бы все равно.
(int *) только один достаточно предупреждающий. Для компилятора это означает, что не думайте о том, что, по вашему мнению, тип просто «верит» программисту, который знает лучше.
Ну, это "знай лучше", вероятно, является корнем всего зла в программировании на Си ....