Arquivo - Manipular com C/C++

1. Arquivo - Manipular com C/C++

José Antônio Nunes de Morais
janunesdemor

(usa Slackware)

Enviado em 25/08/2009 - 18:06h

Prezados eu estava tentando criar um arquivo no C...
não consigo fazer o "gets.." funcionar da este erro ao tentar compilar

arq0.c:(.text+0x67): warning: the `gets' function is dangerous and should not be used.

Eu tento utilizar o scanf("%c",variavel);

no exemplo a baixo ele só grava um caracter alguém sabe qual devo utilizar e como...


#include <string.h>
int main ()
{
FILE *fp;
char string[100];
int i;
fp=fopen("arq.txt","w"); /* Arquivo ASCII, para escrita */
if(!fp)
{
printf("\nErro na abertura do arquivo!");
exit(0);
}
printf("\nEntre com a string a ser gravada no arquivo: ");
gets(string);
for(i=0; string[i]; i++) putc(string[i],fp); //Grave a string, caracter a caracter
fclose(fp);
return 0;
}



  


2. Explique bem...

Gabriel Duarte Guimarães Costa
gabrield

(usa Debian)

Enviado em 25/08/2009 - 18:39h

Você quer gravar um só caracter?
Se for isso, use getc(), e não gets()!
O seu exemplo está compilando, só está ecoando um "warinig", que nada mais é um aviso de que algo pode ser melhorado, substituido ou pode estar errado. Se estivesse dando erro, apareceria um "error:".

Modifiquei seu exemplo para pegar uma cadeia de caracteres sequenciais e grava-los em aquivo:


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

int main ()
{
FILE *fp;
char string[100];
int i;
fp=fopen("arq.txt","w"); /* Arquivo ASCII, para escrita */
if(!fp)
{
printf("\nErro na abertura do arquivo!");
exit(0);
}
printf("\nEntre com a string a ser gravada no arquivo: ");
/*gets(string);*/
scanf("%s", string);
for(i=0; string[i]; i++) putc(string[i],fp); //Grave a string, caracter a caracter
fclose(fp);
return 0;
}

[]'s


3. Use fgets()

André
andrezc

(usa Debian)

Enviado em 25/08/2009 - 19:14h

Pois vamos supor que eu use gets() em um código meu pra pegar uma stirng do teclado, ai o usuario do software pronto digita mais caracteres que o suportado ( que eu defini pro array suportar ) o que vai acontecer ?! Vai dar erro.


É por isso que eu te aconselho a usar fgets(), ela vai limitar o usuario, para que ele digite só a quantidade de caracteres necessaria.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts