Jump to content
Fórum Script Brasil
  • 0

Problema com manipulação de arquivos


.Resident.

Question

Olá amigos, estou fazendo um programa simples em c, oque estou tentando fazer é grava o conteudo da var frase no arquivo Texto.txt

usei o cod assim:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>


void  main(){

      char frase[][200]={"Alguma frase"};
      int i;
       char *arquivo;
        FILE *fp;
     
      arquivo=("textos.txt");
      fp = fopen(arquivo,"w");
     
        for (i=0; i<2; i++){
         fputs("%s\n",sitelist[i],fp); //Imprime o conteúdo da var frase no arquivo c:\\Texto.txt
        }
     
      getch();
     
     
 }

Alguém me da uma luz, porque esta dando erro fico grato.

Edited by .Resident.
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

arquivo=("textos.txt");
      fp = fopen(arquivo,"w");
O correto seria :
arquivo="textos.txt";
      fp = fopen(arquivo,"w");
ou diretamente :
fp = fopen("textos.txt","w");

Sempre uso este ultimo,

mas se o primeiro não funcionar

declare arquivo como

char arquivo[20];

e não como ponteiro, dependendo

do compilador pode dar algum Warning.

Espero ter ajudado.

return 0;

Link to comment
Share on other sites

  • 0
arquivo=("textos.txt");
      fp = fopen(arquivo,"w");
O correto seria :
arquivo="textos.txt";
      fp = fopen(arquivo,"w");
ou diretamente :
fp = fopen("textos.txt","w");
Sempre uso este ultimo, mas se o primeiro não funcionar declare arquivo como char arquivo[20]; e não como ponteiro, dependendo do compilador pode dar algum Warning. Espero ter ajudado. return 0;
Problema esta na linha 17
fputs("%s\n",sitelist[i],arquivo);

aqui ele deveria gravar os dado do vetor sitelist no meu ponteiro chamado de arquivo que aponta e cria o arquivo Textos.txt.

E o retorno dele é void esqueci de por

Link to comment
Share on other sites

  • 0
Olá amigos, estou fazendo um programa simples em c, oque estou tentando fazer é grava o conteudo da var frase no arquivo Texto.txt

usei o cod assim:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>


void  main(){

      char frase[][200]={"Alguma frase"};
      int i;
       char *arquivo;
        FILE *fp;
     
      arquivo=("textos.txt");
      fp = fopen(arquivo,"w");
     
        for (i=0; i<2; i++){
         fputs("%s\n",sitelist[i],fp); //Imprime o conteúdo da var frase no arquivo c:\\Texto.txt
        }
     
      getch();
     
     
 }
Alguém me da uma luz, porque esta dando erro fico grato.
Vamos por partes: 1°) não entendi porque você criou uma matriz de char ao inve do vetor em
char frase[][200]={"Alguma frase"};
use somente
char frase[200]="Alguma frase";
2°) Não declare char *arquivo à menos que você use alocação dinamica. Você não está criando uma string e sim um ponteiro para um char. Use:
char arquivo[20];
ou
char *arquivo=(char *)malloc(20*sizeof(char));
lembrando de dar um free(arquivo) no final do programa caso use a segunda opção. 3°) Não há a necessidade dos parenteses em arquivo=("textos.txt"); 4°)
for (i=0; i<2; i++){
                fputs("%s\n",sitelist[i],fp); //Imprime o conteúdo da var frase no arquivo c:\\Texto.txt
           }
Aqui esta o maior problema (ou problemas). Primeiro, perceba que o seu for vai de 0 a 1, ou seja, (se funcionasse)imprimiria a string 2 vezes. Segundo, você não tem nenhuma variavel "sitelist", voce tem a string "frase". Terceiro, não use %s no fputs, ponha apenas a string que deseja imprimir. Uma forma melhor de fazer essa impressao seria:
fputs(frase,fp);

Perceba que o for nem é necessario

Uma dica pra você que esta começando. Procure ler sobre as funcoes e seu parametros antes de usa-las. E também aprenda a interpretar as informações de erro que os compiladores fornecem, uma vez que você saiba o que cada uma diz, você consegue resolver os erros por si mesmo.

EDIT: Não é necessario o #include conio.h para esse seu programa

Edited by General Shepherd
Link to comment
Share on other sites

  • 0

Bom oque estou tentando fazer é o seguinte:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  // declara e inicializa um array de strings
  // veja que definimos o limite de 99 caracteres
  // por string (uma posição é para o caractere
  // de fim de linha)
  char nomes[][100] = {"Osmar J. Silva", "Carlos de Souza",
    "Fernanda Reis", "Joaquim Alves"};
    FILE *fp;
    char arquivo;
    
    arquivo = "lista.txt";
    fp = fopen (arquivo,"w+")

  // vamos exibir os nomes
  int i;
  for(i = 0; i < 4; i++){
    fputes(nomes[i],fp);
  }
  
  fclose(fp);
  
  

  system("PAUSE");
  return 0;
}

Ou seja quero gravar os nomes gerado pelo array de strings, no arquivo list.txt. figo grato se alguém souber onde estou errando no cod

Edited by .Resident.
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...