/* * File: entrada_saida.c * ---------------------- * Este programa mostra como usar arquivos (tipo txt) para leitura e escrita * É feita a leitura e impressao de uma matrix inteira. */ #include #include #define MAX_LIN 50 #define MAX_COL 50 #define TAMANHO_NOME 20 int main() { int i, j, a[MAX_LIN][MAX_COL]; FILE *arq_entrada, *arq_saida; // declaracao de pointers para variaveis do tipo FILE char nome_file_entrada[TAMANHO_NOME]; char nome_file_saida[TAMANHO_NOME]; printf("Digite o nome do arquivo de entrada: "); // na hora da execucao o usuario deve fornecer o nome do arquivo de // entrada (que quer usar para leitura). // Por exemplo: dados1.txt scanf("%s", nome_file_entrada); // nome_file-entrada = "dados1.txt" printf("Digite o nome do arquivo de saida: "); // o usuario deve fornecer o nome do arquivo de saida (que quer usar // para escrita). Por exemplo: saida1.txt scanf("%s", nome_file_saida); //apos a leitura temos que nome_file_saida = "saida1.txt" arq_entrada = fopen(nome_file_entrada, "r"); //o arquivo dados1.txt e' aberto para leitura. //Isto ficou especificado pelo "r" (read). arq_saida = fopen(nome_file_saida, "w"); //o arquivo saida1.txt e' aberto para escrita // Isto ficou especificado pelo "w" (write). if (arq_entrada == NULL) // testa se arquivo dados1.txt nao existe printf("arquivo de entrada %s nao existe\n", nome_file_entrada); // Abaixo segure uma leitura do arquivo dados1.txt (uma matriz a(5x4)) // e escrita no arquivo saida1.txt (da mesma matriz que foi lida) for (i=0; i< 5; i++) { for (j =0; j < 4; j++) { fscanf(arq_entrada, "%d", &a[i][j]); fprintf(arq_saida, "%d ", a[i][j]); } fprintf(arq_saida, "\n"); } } fclose(arq_entrada); fclose(arq_saida); return 0; } // Execute este programa fornecendo os nomes // dados1.txt e saida1.txt // no arquiov dados1.txt coloque, por exemplo, os dados assim: 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8 // Note que, os dados correspondentes a uma matriz 5x4 estao dados // estranhamente. // // Apos execucao desse programa, verifique com ficou o arquivo saida1.txt