C/Visual C - ¿como comparar palabras en archivos lenguaje C?

   
Vista:
Imágen de perfil de MuerteCibernetica

¿como comparar palabras en archivos lenguaje C?

Publicado por MuerteCibernetica (3 intervenciones) el 12/06/2014 03:23:18
tengo un programa en c, que lee un archivo.txt y muestra su contenido, mi duda es como puedo comparar las palabras de ese contenido con otras?
por ejemplo si dentro del archivo .txt tengo lo siguiente:
1
2
3
4
5
6
star{
a = 5;
b = 3;
r = a * b;
imprime(r);
fin};
como puedo comparar por ejemplo (star==inicio)
si las palabras son iguales , como la puedo guardar en otro vector?

este es mi codigo fuente:

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
#include <iostream>
#include <cstring>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 
int main(void)
{
FILE *pfsArchivo;
int nContador=0;
int contando=16;
char sAux[16]="";
char auxiliar[16]="";
int final;
pfsArchivo= fopen("index.txt", "r");
 
if (pfsArchivo== NULL)
printf("No se pudo abrir el archivo %s \n", "index.txt");
 
else
{
while (fscanf(pfsArchivo,"%16s", sAux) != EOF)
{
printf("%16s", sAux);
printf("\n");
strcpy(auxiliar,sAux);
nContador++;
 
};
printf ("\nNúmero de palabras = %d \n", nContador);
fclose(pfsArchivo);
printf("Palabras reservadas: %d",contando);
 
}
getch();
return 0;
}

// UNIVERSIDAD DEL MAR GRUPO 412
soy nuevo en estos de archivos ya trate de copiar el vector en otro e ir comparando las posiciones pero me marca error, solo echenme la mano con un ejemplo y como podria guardarlo en otro archivo ,gracias (:
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

¿como comparar palabras en archivos lenguaje C?

Publicado por Chema (187 intervenciones) el 12/06/2014 18:50:54
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
73
74
75
76
77
78
79
80
81
82
83
84
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <fcntl.h>
 
char str[]= " star {\n a = 5;\n b = 3;\n r = a*b;\n imprime(r);\n fin};";
 
#define STAR 's'+'t'+'a'+'r'
#define FIN 'f'+'i'+'n'
#define INPRIME 'i'+'m'+'p'+'r'+'i'+'m'+'e'
 
#define ISSEPARATOR(c) \
	(((c) == '=') || ((c) == ';') ||\
	((c) == '{') || ((c) == '}') ||\
	((c) == '(') || ((c) == ')')) \
 
 
void PrintField(char *tipe, char *p, int size)
{
	int i;
	char *c = p;
 
	printf("%s  ", tipe);
 
	for ( i = 0 ; i < size; i++) {
		printf("%c", *c);
		c++;
	}
	printf("\n");
}
/* 
*En esta función MuerteCibernetica  obtendrá el resultado de los valores
* y le nombrarán alumno del mes con matricula de honor.
*/
 
void Result(void)
{
	/*mutiplicar los valores*/
}
 
int main ( void )
{
	char *p;
	char *raw;
	int size = 0;
	int label = 0;
 
	for (p = str; *p; p++ ) {
		if ( isspace( *p) )
			continue;
 
		if ( !ISSEPARATOR(*p)) {
			if ( size == 0)
				raw = p;
			size++;
			label += *p;
			continue;
		}
 
		switch (label) {
			case STAR:
				printf("STAR\n");
				break;
			case FIN:
				printf("FIN\n");
				return 0;
			case INPRIME:
				 printf("INPRIME\n");
				 Result();
				 break;
		}
 
		if ( *p == '='){
			PrintField("variable",raw, size);
		}else if ( *p == ';') {
			PrintField("Valor",raw, size);
		}
 
		raw = p;
		label = size  = 0;
 
	}
	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