Ir ao conteúdo

C Ponteiros e Vetores (argc e argv)


Ir à solução Resolvido por arfneto,

Posts recomendados

Postado

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;
}

 

  • Solução
Postado
    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

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!