C/Visual C - Comparar si existe una letra en una cadena con espacio.

 
Vista:
Imágen de perfil de zohem

Comparar si existe una letra en una cadena con espacio.

Publicado por zohem (2 intervenciones) el 19/01/2017 14:53:20
Necesito ingresar `La vida es bella|a` y que me imprima `La vida es bella`.

La idea es ver si existe la letra que se pone después de `|` en la primera cadena, y luego imprimirla por ejemplo `La vida es bella | o` va a imprimir que `No hay coincidencias`.

Este es mi código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
strcpy(subcadena,cadena);
 
for(i=0;i=cadena;i++){
    /*guarda la primera palabra que ingresa*/
    palabra[i] = strtok(subcadena,"|");
}
 
for(c=0;c=cadena;c++){
    /* guarda el fragmento*/
    fragmento[c] = strtok(NULL,"|");
}
 
if( strstr(palabra,fragmento) != NULL )
    printf("se encontro %s", palabra[i]);
else
    printf("No hay coincidencias\n");
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Comparar si existe una letra en una cadena con espacio.

Publicado por Chema (234 intervenciones) el 19/01/2017 16:58:01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>
/*
* C es ,creatividad , imaginación y sencillez.
* strcpy, strtok, strstr y amigos, No son  creativos ni imaginativos.
* ni tampoco necesarios , para realizar tu idea.
*/
 
char str[] = "La vida es bella|a";
char mask[] = "aeiou";
 
int main (){
	int size = 0;
	char *raw;
	char *end;
	char *c;
	char *m;
	char *start;
	char cpy[124];
	char *ptrcpy;
 
	raw = str;
	size = strlen(str);
	end = raw +size;
 
	while(1){
 
		if(raw >= end)
			break;
		c = raw++;
		if(*c == '|'){
			m = mask;
			/*
			*Comparar raw contra la mascara "aeiou"
			*/
			while(*m){
				/*mascara concide*/
				if(*raw == *m){
					/*
					*copia desde el pricipio de la cadena
					*hasta el caracter anterior a '|'
					*/
					start = str;
					ptrcpy = cpy;
					while(start < c){
						*ptrcpy++ = *start++;
					}
					*ptrcpy = 0x0;
					break;
				}
				m++;
			}
		}
	}
 
 
	printf("%s", cpy);
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparar si existe una letra en una cadena con espacio.

Publicado por Chema (234 intervenciones) el 19/01/2017 18:26:44
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>
/*
* C es ,creatividad , imaginación y sencillez.
* strcpy, strtok, strstr y amigos, No son  creativos ni imaginativos.
* ni tampoco necesarios , para realizar tu idea.
*/
 
char str[] = "La vida es bella|a"
			"La vida es belle|e"
		"La vida es belli|i"
		"La vida es bello|o"
		"La vida es bellu|u"
		"La vida es bellu|z"  /*error*/
		"La vida es bellu|x" ; /*error*/
 
char mask[] = "aeiou";
 
int main (){
	int size = 0;
	char *raw;
	char *end;
	char *c;
	char *m;
	char *start;
	char cpy[1024];
	char *ptrcpy;
 
	raw = str;
	size = strlen(str);
	end = raw +size;
	ptrcpy = cpy;
	start = str;
	while(1){
 
		if(raw >= end)
			break;
		c = raw++;
		if(*c == '|'){
			/*
			*Comparar raw contra la mascara "aeiou"
			*/
			m = mask;
			while(*m){
				/*mascara concide*/
				if(*raw == *m){
					/*
					*copia desde el pricipio de la cadena
					*hasta el caracter anterior a '|'
					*/
					while(start < c){
						*ptrcpy++ = *start++;
					}
					*ptrcpy++ = 10;
					*ptrcpy = 0x0;
					start = raw;
					start++;
					break;
				}
				m++;
			}
			if(*raw != *m)
				printf("Caracter %c No correcto\n", *raw );
 
		}
	}
 
	printf("%s", cpy);
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar