Ir ao conteúdo
  • Cadastre-se

C Ponteiros e Vetores (argc e argv)


Visitante
Ir à solução Resolvido por arfneto,

Posts recomendados

Preciso criar um programa em C que recebe via linha de comando a entrada: ./1 --termo <termo> --frase “<frase>”;

Onde <termo> é substituída por uma string sem espaços de tamanho máximo 10 e <frase> é substituída por uma string de tamanho máximo 100 (pode conter espaços). A saída deve ser a localização do termo na frase.  Ex: ./1 --termo ro --frase “O rato roeu a roupa do rei de roma”.

 

Saída do Programa:
Termo encontrado nas posições 7, 14 e 30.

 

Porém meu programa não mostra a localização dos termos:

 

#include<stdio.h>

int main (int argc, char *argv[]){
	int i = 0;
	int j = 0;
	int l= 0;
	char *termo, *frase;

	termo = (argv[0]);
	frase = (argv[1]);

  
	for (l = 0; termo[l] != '\0'; l++);//verifica o tamanho
	for (i = 0, j = 0; frase[i] != '\0' && termo[j] != '\0'; i++){
		if (frase[i] == termo[j]){
			j++;
		}
		else{
			j = 0;
		}
	}
	if (j == l){
		printf("Termo encontrado nas posições: %d", i - j);
	}
	else{
		printf("Termo não encontrado");
	}
	return 0;
}

 

Link para o comentário
Compartilhar em outros sites

  • Solução
    termo = (argv[0]);
    frase = (argv[1]);

 

Qual a razão desses parenteses? 

 

Não entendi seu programa.

 

for (l = 0; termo[l] != '\0'; l++);//verifica o tamanho
	for (i = 0, j = 0; frase[i] != '\0' && termo[j]
// ...

 

NUNCA escreva assim se a lógica não exigir. Declare as variáveis de controle DENTRO do for.

 

NUNCA use variáveis globais com nomes ingênuos como i e l. Isso sempre cai na sua cabeça. Além de ser proibido e toda parte, escolas e empresas.

 

Se está usando Linux veja se seu compilador oferece a função getopt() 

 

argv[0] é o nome do programa.

 

Seu programa deve ter CINCO argumentos.

 

Porque não escreve um programa que simplesmente mostra antes de tudo os argumentos? Te daria mais informação sobre o que está fazendo em uma linha de programa... os argumentos são constantes.

 

Seu executável deve ser 1.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...