Ark
Membros-
Total de itens
31 -
Registro em
-
Última visita
Tudo que Ark postou
-
#include <stdio.h> #include <string.h> void procura(char *str, FILE *fp){ int pos_atual, tam = strlen(str)+1; char ch, word[tam]; while (!feof(fp)){ pos_atual = SEEK_CUR; if(*str==(ch=getc(fp))){ fseek(fp, -1, pos_atual); fgets(word, tam, fp); if(!strcmp(word, str)){ printf("Palavra encontrada: %s", word); return; } pos_atual -= tam-1;; } } printf("A palavra digitada não foi encontrada."); } main(){ FILE *fp; char word[15], arq[15]; printf("digite o nome do arquivo que você deseja ler: "); scanf("%s", arq); fp = fopen(arq, "r+"); printf("Digite a palavra que queira buscar no arquivo %s: ", arq); scanf("%s", word); procura(word, fp); getch(); } A função aí em cima procura() vai procurar pela string str no arquivo fp, onde tam é o tamanho da string. A função vai ler caracter por caracter até achar um que coincida com o primeiro caracter da string, depois faz-se a comparação com strcmp() que se retornar zero, ou seja, se as strings forem iguais, vai escrever que achou e retorna pra main. Caso as strings não sejam iguais, pos_atual vai ser decrementada com tam-1 passando assim pro caracter sucessor, pra fazer denovo a comparação com o primeiro caracter da string até encontrar e assim ver se achou denovo, e tal. Espero ter ajudado. Abraço.
-
Desculpa cara eu acho que eu não soube me expressar direito, então, é...vou decompor a minha pergunta em 2: 1. Não tem como mesmo eu retornar ponteiro pra var local de uma função pra main? 2. O C faz alguma distinção especial entre matriz de char(strings) e matrizes de outros tipos, como int? Abraço.
-
Galera, desculpe a ignorancia, mas porque eu não consigo retornar um vetor de inteiros de uma função, quando eu posso retornar vetor de char(string)? Obrigado pela atenção. Abraço a todos.
-
int x, c, aux; for(c=1; c<=MAX-1; c++) for(x=0; x<MAX-1; x++) if(matriz[x+1] > matriz[x]){ aux=matriz[x+1]; matriz[x+1]=matriz[x]; matriz[x]=aux; } o for mais interno vai sair comparando um elemento do vetor com seu sucessor até chegar no enézimo termo do vetor. o for mais externo vai fazer isso MAX-1 vezes, onde MAX é a quantidade de elementos do vetor a ser ordenado. abraço. EDIT: desculpe ter feito o post acima, não foi minha intenção.
-
Diogoo, porque você não tenta criar outro arquivo e copiar as partes importantes pra ele e depois apagar o arquivo anterior? Acho que seria a maneira mais simples de se fazer isso... Abraço.
-
string com 15 caracteres: char string1[15]; 15 strings com 15 caracteres cada. char string2[15][15]; pra ler as 15 strings: int x; for(x=0; x<15; x++) scanf("%s", string2[x]); Abraço.