Tema: buffer c++
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 05/02/2009, 07:14
retrodev
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: buffer c++

Vale. Veras, tengo un pequeño interprete desarrollado para dar explicaciones de este tipo.

Este es el codigo:

Código:
#include "sunburn_h.h"

// creditos
char creditos[255] = "Sun - Compilador\nVersion 0.0.1\nFecha de inicio 07/05/08\nMade by retrodev";
// Variables para cargar el fichero 
char *fileArgumentName;
FILE *fileSb;
FILE *fileObj;
// Variables para volcar el fichero en un array.
char codeSb[2048]; 
char bufferCodeSb[81];
char cursorFile;
int contadorCaracteres=0;
int contador_CF;
int contador_BL;
int xd=0;
int xdd=0;

int main(int argc, char *argv[])
{
// Recoge el nombre del fichero a abrir. Si no se le pasa argumento, se sale de la ejecucion
// asignamos ademas el valor del argumento a fileArgumentName
// se abre el fichero, y miramos si existe sino, error2
if ((fileArgumentName = argv[1]) == NULL) 
{  
	cout << creditos << endl; 
	exit(0); 
}
   
if ((fileSb = fopen (fileArgumentName,"r")) == NULL) 
{ 
	cout << "Error 2: Fichero no valido" << endl; 
	exit(0); 
}

if ((fileObj = fopen (strcat(fileArgumentName,".osb"),"w")) == NULL) 
{ 
	cout << "Error 2: Fichero no valido" << endl; 
	exit(0); 
}
while ((cursorFile =getc(fileSb)) != EOF ) 
{ 
  
	int comp=0,cm=0;
	fscanf ( fileSb,"%s",bufferCodeSb);
   
	if (cursorFile == '\n')
		{ contador_CF++; }
  
	if (cursorFile ==  ' ') 
		{ contador_BL++; }
  
	if ((comp = strcmp(bufferCodeSb,"IniCon")) == 0 && _InitAppDeclare == 1 )
		{  
			cout <<"InitCon ya iniciada"<<endl;
			exit(0); 
		}

	if ((comp = strcmp( bufferCodeSb,"IniCon")) == 0 && _InitAppDeclare == 0 ) 
		{ 
			_InitAppDeclare = 1; 
		//	cout <<"_api1 "; 
			fprintf ( fileObj,"_api1 ");
		}
    if ( _InitAppDeclare == 1 ) 
    { 
        	if ((comp = strcmp( bufferCodeSb,"dv")) == 0 )
        		{ 
        		//	cout <<"[v] "; 
	           		fprintf ( fileObj,"[v] ");
	           		
	           		while (cm !=1){
	           	    cm = strcmp (bufferCodeSb, ";");        		
                    fscanf ( fileSb,"%s",bufferCodeSb);
                    cout << bufferCodeSb<<" ";
                    fprintf ( fileObj,"%s ",bufferCodeSb);
                }
              
            
	           	}
   
   	        if ((comp = strcmp( bufferCodeSb,"EndCon")) == 0) 
        		{ 
        	//		cout <<"[x] ";
        			fprintf ( fileObj,"[x] ");
        			fclose(fileSb);
                    fclose(fileObj);
                   	break;
	           	}
        	 if ((comp = strcmp( bufferCodeSb,"echo")) == 0) 
		        { 
	           //  	cout <<"[e] "; 
	                fprintf ( fileObj,"[e] ");
	                fscanf(fileSb,"%s",bufferCodeSb); 
        		    while(xdd!=81){
               //     cout << bufferCodeSb<<" ";
                    fprintf ( fileObj,"%s ",bufferCodeSb);
                    fscanf(fileSb,"%s",bufferCodeSb); 
                    xdd++;
                    xd = strcmp (bufferCodeSb, ";"); 
                    if ( xd==0) { //cout << bufferCodeSb<<" ";
                    fprintf ( fileObj,"%s ",bufferCodeSb);break;}
                   }
                }
      } else { 
                cout <<"Error 01 : No se ha iniciado la funcion _InitCon"<<endl; 
                exit(0);
    }
	codeSb[contadorCaracteres] = cursorFile;
	contadorCaracteres++; 
  }
cout << creditos << endl;     
cout <<endl<< "Total caracteres leidos = " << contadorCaracteres << endl;    
cout << "Total Retornos de carro leidos = " << contador_CF << endl;    
cout << "Total espacios leidos = " << contador_BL << endl;      
system("pause");

return EXIT_SUCCESS;
}
Código:
#include <cstdlib>
#include <iostream>
#include <conio2.h>
using namespace std;
int _InitAppDeclare = 0;
Este codigo lee y interpreta el siguiente fichero :

Código:
_IniCon
echo Ahora si que admite espacios ^_^ ;
echo Es mas, ahora es hasta multilinea ;
echo es una forma mas o menos curiosa de emitir texto ;
EndCon
Espero que te guie lo suficiente como para continuar, ahora he de ausentarme un rato para ir a comer.

Al volver, si te ha quedado alguna duda, posteala y miramos de resolverla.