oi, pessoal, fiz esse programa, um pouco longo, mas to tendo problemas com o NULL e o memset. O compilador da erro. alguém pode identificar o erro? vlw
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define m 347
#define hash (k+i)%m
int pesquisa_de_chave (int *v, int chave){//retorna a posicao da chave no vetor quando bem sucedido
int inf, sup, meio;
for(sup=0;(v)!=(NULL);sup++) //procurando chave
sup--;
for(inf=0;inf<=sup;inf++, sup--){
meio=(inf+sup)/2;
if(chave==(v[meio])) return(meio);
if(chave<meio) sup=(meio--);
if(chave>meio) inf=(meio++);
return(0);
}
}
int busca(){
FILE *fp;
char s, *str=&s, ch;
int i, aux=1, var;
for(var=0;var==0;){
while(aux!=0){
printf("Qual contato deseja pesquisar?\n(Deve ter no minimo os 7 primeiros caracteres)\n(Ele irá exibir apenas o primeiro contato correspondente.)\n");
scanf("%s", str);
for(i=0;str!=(NULL);i++)
if(i>7) aux=0;//e sai do loop
}
printf("\n\n\nPesquisando...\n\n\n");
aux=verificacao_busca(*str);//não zero é busca bem sucedida, zero erro.
printf("Digite o novo contato a ser inserido./n formato: 'nome_contato','numero_contato(9 digitos)' \n");
scanf("%s", str);
for (i=0;str!=',';i++)
i++;
for (aux=0;str!='\0';i++){
if(str>=48&&str<=57) aux++;
}
if(aux==9)aux=0;
else printf("O numero do seu contato não contem 9 digitos.\nErro ao registrar contato.\n\n\n");
}
for(i=0,k=0;i<7;i++) k=k+str;
for(i=0, aux=0;i<347&&aux!=0;i++){ //aux sera o retorno de chave ocupada(0) ou vazia(não 0)
chave=hash;
aux=verificacao_inserir(chave);
}
if(i>=347) return(i);//passando daqui, a chave já esta definida
fp = fopen("insercaoAgenda.txt","w");
rewind(fp);
for(i=1;i<aux;) while(c=fgetc(fp))!=EOF) if(c=='\n') i++;//aqui ele se posiciona na primeira casa da linha desejada para inserir o contato
a1=chave/100; chave=chave-(a1*100); //a1 algarismo centena
a2=chave/10; chave=chave-(a2*10); //a2 dezena
a3=chave; //unidade
*s=a1+48; s++;
*s=a2+48; s++;
*s=a3+48; s++;
for(i=0;str!=(NULL);i++) s=str; //'s' passa a ser a string a ser inserida
fputs(s,fp);//escrevendo nova linha no arquivo
close(fp);
return(0);
}
int remocao(){
FILE *fp;
int var, aux, i;
char lixo, c;
for(aux=0;aux==0;){
printf("\n\n\nPesquise o contato para remover.\n\n\n");
var=busca_remocao();//utilizando o método busca para exibir o contato desejado a apagar.
for(aux=0;aux==0;){
printf("\nÉ este contato que deseja apagar?\ns/n\n");
scanf("%c", &lixo);
if(lixo=='s'||lixo=='n') aux=1;
}
if(lixo=='s')aux=1;
else aux=0;
}//saindo do loop, o objeto e sua posicao estao definidos
fp=fopen("remocaoAgenda.txt","w");
for(i=0;i<var;) while(c=fgetc(fp))!=EOF) if(c='\n') i++;//movendo ponteiro para o primeiro caractere do contato a remover
for(;c!='\n';c=fgetc(fp)) memset(fp, NULL, (sizeof(char)));//substituindo os caracteres um por um por NULL ate antes de '\n'
memset(fp, (NULL), (sizeof(char)));//apagando o '\n' e eliminando a linha
return(1);
}
int busca_remocao(){
FILE *fp;
char s, *str=&s, ch;
int i, aux=1, var;
for(var=0;var==0;){
while(aux!=0){
printf("Qual contato deseja pesquisar?\n(Deve ter no minimo os 7 primeiros caracteres)\n(Ele irá exibir apenas o primeiro contato correspondente.)\n");
scanf("%s", str);
for(i=0;str!=(NULL);i++)
if(i>7) aux=0;//e sai do loop
}
printf("\n\n\nPesquisando...\n\n\n");
aux=verificacao_busca_remocao(*str);//não zero é busca bem sucedida, zero erro.
Pergunta
Katsumi
oi, pessoal, fiz esse programa, um pouco longo, mas to tendo problemas com o NULL e o memset. O compilador da erro. alguém pode identificar o erro? vlw
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.