Я выделяю память для массива.Данные поступают из 3 разных текстовых файлов, которые я объединяю и размечаю.Когда я пытаюсь найти fscanf из файлов, я получаю сообщение о том, что мой массив имеет тип int, когда я определенно.объявлен тип char
Я пытался найти и исправить вещи, но это не помогло.Я попытался выполнить перемотку (), потому что подумал, что, возможно, индикатор положения находится в конце файла.Размер массива - это количество строк в файлах .txt.Файлы .txt содержат только слово в строке.Я убрал функцию подсчета строк, чтобы очистить неважный код.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int addOn(FILE *file, int size);
char **array;
int height=0;
int count2 = 0;
int main()
{
FILE *file0;
FILE *file1;
FILE *file2;
int i;
int sz0, sz1, sz2;
int totalsz;
//open files
file0 = fopen("american0.txt", "r");
file1 = fopen("american1.txt", "r");
file2 = fopen("american2.txt", "r");
//getting size of the files
sz0 = countLines(file0);
sz1 = countLines(file1);
sz2 = countLines(file2);
totalsz = sz0+sz1+sz2;
printf("%d", sz0);
//initializing array
array = (char **)calloc(totalsz, sizeof(char *));
for(i = 0; i < totalsz; i++)
{
array[i] = (char *)calloc(50, sizeof(**array));
}
addOn(file0, sz0);
addOn(file1, sz1);
addOn(file2, sz2);
fclose(file0);
fclose(file1);
fclose(file2);
for(i = 0; i <totalsz; i++)
{
free(array[i]);
}
free(array);
return 0;
}
int addOn(FILE *file, int size)
{
char str[50];
for(int height = 0; height < size; height++)
{
for(int width = 0; width < 50; width++)
{
fscanf(file, "%s", array[count2][width]);
printf("%s", array[count2][width]);
count2++;
}
}
}
Я ожидаю, что каждое слово будет распечатано после помещения его в массив, но я получаю только эту ошибку:
warning: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘int’ [-Wformat=]
fscanf(file, "%s", array[count2][width]);
^
warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=]
printf("%s", array[count2][width]);