Estou com um problema que está me dando uma tremenda dor de cabeça:
Preciso preencher com dados de arquivos uma matriz de caracteres, mas não tenho conseguido sucesso, mesmo depois de muitas tentativas.
Sou programador iniciante, não tenho muita experiência.
Estou aberto a outras abordagens para este problema, mas estou curioso para saber o que estou fazendo de errado nesta implementação para poder corrigir meu raciocínio.
Esses são os nomes dos arquivos, com seus respectivos conteúdos:
// limpeza da matriz
for (i = 0; i < 100; i++){
for (l = 0; l < 25; l++){
M[i][l] = '{TEXTO}';
}
}
fref = fopen ("ricardo.txt", "r+"); // abertura do arquivo de referencias
if (fref == NULL){ printf ("\nErro ao se abrir fref!\n");}
while (fgets (buffer0, 100, fref) != NULL){ // leitura do arquivo de referencia
j++;
sscanf (buffer0, "%s", mais); // captura das palavras-chaves (alfa-numericas)
strcpy (M[j], mais); // preenchimento da matriz com as palavras capturadas acima
flis = fopen ("ortolista.txt", "rw"); // abertura da lista de arquivos a serem lidos
if (flis == NULL){printf ("\nErro ao se abrir flis!\n");}
while (fgets (buffer1, 100, flis) != NULL){ // retirando os '\n' dos nomes dos arquivos
for (i = 0; i < 100; i++){
if (buffer1[i] == '\n'){
buffer1[i] = '{TEXTO}';
}
}
farq = fopen (buffer1, "rw"); // abertura dos arquivos individuais contidos na lista
if (farq == NULL){printf ("\nErro ao se abrir farq!\n");}
while (fgets (buffer2, 100, farq) != NULL){ // leitura dos arquivos individuais
sscanf (buffer2, "%s %s", A, B); // captura das duas palavras-chaves contidas na linhas
if (strcmp (M[j], A) == 0){ // comparacao da primeira palavra-chave (alfa-numerica) com aquela da ultima linha da matriz
j++;
strcpy (M[j], B); // copia da segunda palavra-chave (apenas caracteres) do arquivo para a matriz
}
}
fclose (farq);
}
fclose (flis);
}
fclose (fref);
// -------------------------------------Impressao da Matriz-----------------------------------------//
for (i = 0; i < 100; i++){
if (M[i][0] != '{TEXTO}' && M[i][1] != '{TEXTO}' && M[i][2] != '{TEXTO}'){
printf ("MATRIZ: %s\n", M[j]);
}
}
}
Esse código executa o seguinte movimento:
1. Abre um arquivo de referência (ricardo.txt) e copia a primeira palavra-chave para a matriz M;
2. Abre uma lista com arquivos a serem pesquisados;
3. Abre o primeiro arquivo da lista e procura nele pela palavra-chave que esta em M;
4. Caso encontre, copia a outra palavra-chave da mesma linha para M;
5. Abre o segundo arquivo e de novo procura pela palavra-chave de M;
6. Caso encontre, copia a outra palavra-chave da mesma linha para M;
7. Abre o outro arquivo...
8. Copia a segunda palavra-chave do arquivo de referência para M;
9. Novamente busca por ela nos arquivos da lista... encontrando, copia as outras palavras da mesma linha para a matriz...
...
Até o encerramento da lista de palavras de ricardo.txt;
O meu objetivo é que a matriz final tenha o seguinte conteúdo:
O problema é que sempre obtenho essa mesma resposta no terminal:
MATRIZ: AAAAAAAAA
MATRIZ: AAAAAAAAA
MATRIZ: AAAAAAAAA
MATRIZ: AAAAAAAAA
MATRIZ: AAAAAAAAA
MATRIZ: AAAAAAAAA
MATRIZ: AAAAAAAAA
MATRIZ: AAAAAAAAA
MATRIZ: AAAAAAAAA
MATRIZ: AAAAAAAAA
Eu já chequei a leitura dos arquivos, os loops, as comparações das palavras-chaves, a impressão dos dados... mas não consigo encontrar o problema.
Alguém saberia me dar uma luz para este código?