Ir ao conteúdo
  • Cadastre-se

lets

Membro Júnior
  • Posts

    6
  • Cadastrado em

  • Última visita

Reputação

1
  1. Quero saber uma forma em que posso salvar a string de dentro de um vetor como somente uma posição de um outro vetor. Por exemplo eu tenho o vetor chamado "entrada" com esses valores: entrada [0] = c entrada [1] = a entrada [2] = s entrada [0] = a Se eu imprimir todo esse vetor tenho como resultado a string "casa". Preciso saber como posso salvar esse resultado em um outro vetor de forma que toda a string fique apenas em uma posição dele, sem que cada letra fique em uma posição diferente do vetor como ocorre no de entrada. No caso desse exemplo o resultado que quero obter seria esse: novovetor[0] = "casa"
  2. Eu tenho um código onde estou lendo caractere por caractere dentro de um arquivo e salvando eles dentro de um vetor chamado "entrada". Eu estou usando uma vírgula(o caractere 44 da tabela ASCII) como caractere de parada, então eu vou lendo os caracteres do arquivo e armazenando todos no vetor "palavras" enquanto eu não encontrar um vírgula, quando eu encontro a virgula eu paro de ler os caracteres e tenho um if que compara o conteúdo que foi já salvo nesse vetor "entrada" com as palavras que quero encontrar, por exemplo "abacaxi", se a string dentro do meu vetor "entrada" for igual a "abacaxi" ele apresenta um prinft na tela com "Encontrei abacaxi" e limpa o meu vetor, senão ele passa para o próximo if. Eu preciso fazer com que cada vez que a string de caracteres que tenho dentro do meu vetor "entrada" for igual a string de caracteres que estou comparando dentro do meu if eu salve essa string do vetor "entrada" como posição de um novo vetor chamado "vetornovo". Por exemplo: Foram lidos os caracteres do meu arquivo e eles formaram a string "abacaxi", eu comparo essa string dentro do meu if e verifico que ela foi encontrada, aí eu preciso copiar ela do vetor "entrada" como uma nova posição dentro do vetor "vetornovo". Nesse caso deveria ficar: vetornovo[0] = "abacaxi". Esse é o código: #include <stdio.h> #include <stdlib.h> int main(){ int caractere; int i=0; int v=0; char entrada[100] = ""; char limpa; FILE *arquivo; arquivo = fopen("arq.txt", "r"); if (arquivo){ do { caractere = fgetc(arquivo); if(caractere != 44) { entrada[i++] = caractere; }else{ if(strcmp(entrada, "abacaxi")==0){ printf("\nEncontrado abacaxi\n", entrada); for(v=0; v<10; v++){ entrada[v]=limpa;} }else if(strcmp(entrada, "manga")==0){ printf("\nEncontrada manga\n", entrada); for(v=0; v<10; v++){ entrada[v]=limpa;} }else if(strcmp(entrada, "laranja")==0){ printf("\nEncontrada laranja\n", entrada); for(v=0; v<10; v++){ entrada[v]=limpa;} }else if(strcmp(entrada, "morango")==0){ printf("\nEncontrado morango\n", entrada); for(v=0; v<10; v++){ entrada[v]=limpa;} } for(v=0; v<10; v++){ entrada[v]=limpa;} i=0; } }while(!feof(arquivo)); } system("pause"); }
  3. Estou tentando fazer um código onde digito várias palavras e caracteres dentro de um arquivo e ele lê os dados do arquivo e compara com as strings que tenho dentro de um vetor já pronto. Por exemplo, ele lê a palavra "printf" dentro do arquivo e compara com a string "printf" de dentro do vetor, e retorna se tenho ou não a palavra lida no arquivo dentro do vetor. Fiz isso até agora, mas não estou conseguindo comparar os dados de dentro do meu arquivo com as strings de dentro do meu vetor. Como faço isso? int main(){ char reservadas[3][20] = {'int', 'char', 'float', 'printf', '>', '<'}; int caractere; FILE *arquivo; arquivo = fopen("arq.txt", "r"); if (arquivo){ do { fscanf(arquivo,"%c",&caractere); printf("%c", caractere); }while(!feof(arquivo)); } system("pause"); }
  4. Com ajuda eu cheguei a esse código, mas ainda estou com um problema Quando leio um caractere especial como "ç" ele apresenta 3 resultados, dessa forma: https://imgur.com/a/Lqhi0qp O certo seria o programa parar a execução na primeira vez que aparecer um caractere que não existe nesse intervalo da tabela ASCII e exibir apenas uma vez a mensagem "o caractere de código 135 nao existe na tabela" #include <stdio.h> #include <stdlib.h> typedef struct no_lista No_Lista; typedef struct lista Lista; struct no_lista{ int numero; struct no_lista *proximo; }; No_Lista* cria_lista(void){ return NULL; } No_Lista* Insere_fim (No_Lista* l, int v){ No_Lista* novo_no = (No_Lista*)malloc(sizeof(No_Lista)); No_Lista* aux = l; novo_no->numero = v; if (aux == NULL){ novo_no->proximo = l; return novo_no; } else{ while(aux->proximo != NULL){ aux = aux->proximo; } novo_no->proximo = NULL; aux->proximo = novo_no; return l; } } void percorre(No_Lista *l){ No_Lista *no; no = l; while(no!=NULL){ int valor = (unsigned char) no->numero; if (valor >= 32 && valor <= 126){ printf("\n O caractere: %c de codigo ASCII: %i contem na tabela de literais", valor, valor); }else{ printf("\n O caractere codigo %i nao existe na tabela", valor); } no = no->proximo; } } int main(){ unsigned char valor; No_Lista *l = (No_Lista*) malloc(sizeof(No_Lista)); l = cria_lista(); FILE *arquivo; arquivo = fopen("arq.txt", "r"); if (arquivo){ puts("I get it!"); do { fscanf(arquivo,"%c",&valor); l = Insere_fim(l, (int)valor); } while(!feof(arquivo)); fclose(arquivo); } percorre(l); return 0; }
  5. Comecei por uma assim, mas o problema é que preciso da parte que compara os caracteres do meu arquivo com os da tabela ASCII, isso está complicando o resto
  6. Fiz esse código para ler os caracteres de um arquivo, guardar eles em uma lista, depois percorrer a lista informando se o código do caractere está entre o intervalo >=32 ou <=126 da tabela ASCII, mas ele não está me retornando nenhum resultado quando executo mesmo dentro do arquivo lido ter caracteres. Não consigo encontrar o erro #include<stdio.h> #include<stdlib.h> typedef struct no_lista No_Lista; typedef struct lista Lista; struct no_lista{ int numero; struct No_lista *proximo; }; Lista* cria_lista(void){ return NULL; } No_Lista* Insere_fim (No_Lista* l, int v){ No_Lista* novo_no = (No_Lista*)malloc(sizeof(No_Lista)); No_Lista* aux = l; novo_no->numero = v; if (aux == NULL){ novo_no->proximo = l; //return novo_no; } else{ while(aux->proximo != NULL){ aux = aux->proximo; } novo_no->proximo = NULL; aux->proximo = novo_no; return l; } } int main(){ int valor; No_Lista *l = (No_Lista*) malloc(sizeof(No_Lista)); l = cria_lista(); FILE *arquivo; arquivo = fopen("arq.txt", "r"); if (arquivo) { do { fscanf(arquivo,"%d",&valor ); l = Insere_fim(l,valor); void percorre(No_Lista *l){ No_Lista *no; no = l; while(no!=NULL){ if (valor >= 32 && valor <= 126){ printf("\n O caractere: %c de codigo ASCII: %i contem na tabela de literais", valor, valor); no = no->proximo; }else{ printf("\n O caractere: %c de codigo ASCII: %i nao contem na tabela de literais", valor, valor); fclose(arquivo); } no = no->proximo; } } } while(!feof(arquivo)); } return(0); }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...