Arquivos com String
2 participantes
Página 1 de 1
Arquivos com String
Faça um programa que leia um arquivo (nomes.txt) que contém uma listagem de nomes (um por linha). O programa deverá salvar em outro arquivo a mesma listagem, mas invertida.( o invertida não é para ser de tras pra frente mais sim o nome da ultima posicão na primeira e assim sucessivamente............
nao consigo sair disso
#include (stdio.h)
#include (string.h) nao está declaro entre <> porque o forum nao exibe
int main(){
FILE *in, *out;
char str[60];
in = fopen("nomes.txt", "r");
out = fopen("nomes_copia.txt", "w+");
if(in==NULL){
printf("ERRO!!!");
return 1;
}
while(fgets(str, 60 , in) != NULL){
fputs(str,out);
}
fclose(in);
fclose(out);
}
nao consigo sair disso
#include (stdio.h)
#include (string.h) nao está declaro entre <> porque o forum nao exibe
int main(){
FILE *in, *out;
char str[60];
in = fopen("nomes.txt", "r");
out = fopen("nomes_copia.txt", "w+");
if(in==NULL){
printf("ERRO!!!");
return 1;
}
while(fgets(str, 60 , in) != NULL){
fputs(str,out);
}
fclose(in);
fclose(out);
}
biel.paes- Iniciante
- Mensagens : 22
Data de inscrição : 04/03/2021
Re: Arquivos com String
Oi biel.paes!
Há várias formas de fazer essa questão, inclusive usando C++. Porém, partindo do princípio que temos apenas a linguagem C, a solução mais interessante ao meu ver seria criar uma String e concatenar os valores nela, separados por "\n", e no final apenas escrever a String resultante no arquivo de destino. Veja:
istr é a String que queremos montar. Veja que como o fgets lê todos os caracteres da linha até o \n, e como na última linha não tem \n, é necessário concatenar o \n manualmente quando chega no fim do arquivo (por isso o feof).
OBS: Esse código só é válido para nomes formados por uma única String. Caso haja mais de uma String por linha, é necessário adaptar o código, provavelmente trocando o fgets por uma outra forma de leitura que pegue a linha inteira. Porém, a ideia central continuará sendo a mesma.
Há várias formas de fazer essa questão, inclusive usando C++. Porém, partindo do princípio que temos apenas a linguagem C, a solução mais interessante ao meu ver seria criar uma String e concatenar os valores nela, separados por "\n", e no final apenas escrever a String resultante no arquivo de destino. Veja:
- Código:
#include<stdio.h>
#include<string.h>
int main(){
FILE *in, *out;
char str[60], istr[1000] = "";
int cnt = 0;
in = fopen("nomes.txt", "r");
out = fopen("nomes_copia.txt", "w+");
if(in==NULL){
printf("ERRO!!!");
return 1;
}
while(fgets(str, 60 , in) != NULL){
if(feof(in)) strcat(str, "\n");
strcat(str, istr);
strcpy(istr, str);
}
fputs(istr, out);
fclose(in);
fclose(out);
}
istr é a String que queremos montar. Veja que como o fgets lê todos os caracteres da linha até o \n, e como na última linha não tem \n, é necessário concatenar o \n manualmente quando chega no fim do arquivo (por isso o feof).
OBS: Esse código só é válido para nomes formados por uma única String. Caso haja mais de uma String por linha, é necessário adaptar o código, provavelmente trocando o fgets por uma outra forma de leitura que pegue a linha inteira. Porém, a ideia central continuará sendo a mesma.
Victor011- Fera
- Mensagens : 663
Data de inscrição : 21/10/2015
Idade : 25
Localização : Rio de Janeiro, Brasil
biel.paes gosta desta mensagem
Tópicos semelhantes
» Letra maiúscula em String em C
» [Resolvido]Imprimir a inversa de uma string. Como faço?
» [Resolvido]Olhem meu código. O que devo mudar...[STRING]
» Compactador de arquivos
» Problemas com arquivos
» [Resolvido]Imprimir a inversa de uma string. Como faço?
» [Resolvido]Olhem meu código. O que devo mudar...[STRING]
» Compactador de arquivos
» Problemas com arquivos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos