05/02/2009, 07:14
|
|
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. |