Função q verifica se uma string está no inicio ou final de outra
Fu fazer um programa pra verificar se uma string está no começo ou final de outra, mas n ta dando certo, na hora de imprimir a resposta n imprime nada. Pelo menos o meu raciocínio ta certo? N consigo pensar em outra forma de fazer D:
#include <stdio.h>
#include <stdlib.h>
int StrEnd(char str, char t){
int i = 0, j = 0;
while(*(t+i) != '\0')//conta os caracteres em t
i++;
--i;
while(*(str + j) != '\0'){// conta os caracteres em str
j++;
--j;
}
/*a condição j <=i é para verificar os caracteres até o tamanho da string t*/
while(j<=i){
/*verifica se é igual, se for continua verificando, quando j = i, retorno 0*/
if(*(str + 1) == (*(t + 1))){
*str++;
*t++;
if(j = i)
return 0;
}
}
j -= i;//j = j - i para verificar os i's ultimos caracteres
/*continua enquanto for diferente de \0, na verdade não precisava do &&*/
while(*str != '\0' && *t != '\0'){
/*verifico se é igual a partir da posição j de str com a primeira posição d e t,se for, incremento e quando for igual a \0 retorno 1*/
if(*(str + j) == *(t + 1)){
*str++;
*t++;
if(*str == '\0' || *t == '\0')
return 1;
}
}
}
int main(){
//declaro as variaveis
int resp;
char *string, *caracter;
//aloco memoria
string = (char*)malloc(sizeof(char));
caracter = (char*)malloc(sizeof(char));
//leio as strings
printf("Digite a String: ");
fflush(stdin);
fgets(string,50,stdin);
printf("Digite o caracter: ");
fflush(stdin);
fgets(string,50,stdin);
/*dúvida na hora de passar parâmetro: sempre que for passagem
por referencia na hora da chamada vou colocar os endereços dos ponteiros?*/
resp = StrEnd(&string,&caracter);
printf("Valor de resp: ", resp);//fiz pra testar se ia imprimir alguma coisa e nao imprimiu
//imprime resultado
if(resp == 0)
printf("Caracter no início da string");
if(resp == 1 )
printf("Caracter no final da string");
if(resp != 1 && resp != 0)
printf("Caracter no meio da string");
}Discussão (3)
Carregando comentários...