Leerzeichen abfrage



  • Hallo erst mal ich bin neu hier..
    also ich hab n kleines programm geschrioebn, in dem man etwas eingeben kann. allerdings akzeptiert das prog leerzeichen von vornherein nicht... wie kann ich abfragen ob im getippten ein leerzeichen enthalten ist???und wie könnt ich das trotzdem integrieren? 😕 😃



  • Aus den Begriffen "getippten" und "Leerzeichen" saug ich mir nun mal eine Lösung aus den Fingern:

    cin.getline(char *pBuffer, int noOfChars);
    

    Wenns net stimmt, dann liegts wohl an dem übermäßigen Informationsgehalt deines Postings...



  • thx für die hilfe... das abrufen von leerz. hab ich jetzt geschnallt, es geht mit kbhit, aber wenn ich jetzt ein leerzeichen eintippe, stürzt das Programm ab. es ist eine art verschlüsseler, ... sry für die miese beschreibiung 😞



  • JossBoss schrieb:

    thx für die hilfe... das abrufen von leerz. hab ich jetzt geschnallt, es geht mit kbhit, aber wenn ich jetzt ein leerzeichen eintippe, stürzt das Programm ab. es ist eine art verschlüsseler, ... sry für die miese beschreibiung 😞

    Zeig mal deinen Code, mit kbhit() geht da gar nix 😃

    MfG SideWinder



  • Hiwer der Code 🙂 :

    #include <iostream>
    #include <fstream>
    #include <windows.h>
    #include <string>
    
    using namespace std;
    
    int SaveData( char cWord[], char cPassW[])
    {
    	ofstream dat_out;
    	string cFileName;
    
    	cout<<"\n\n Please enter the Name of the File: \n";
    	cin>>cFileName;
        cout<<endl;
        cFileName+=".txt";
    
    	dat_out.open(cFileName.c_str(),ios_base::out);
    
    	if(!dat_out)
    	{
    		cout<<"\n Couldn't open the File!\n\n";
    		return -1;
    	}
    
    	dat_out<<"   Your Word:\n\n";
    	dat_out<<"      "<<cWord;
    	dat_out<<"\n\n   The Encrypted Word:\n\n";
    	dat_out<<"      "<<cPassW;
    
    	dat_out.close();
    
    	return 0;
    }
    
    int LoadData()
    {
    	ifstream dat_in;
        string cFileName;
    	char cLetter;
    
    	cout<<" \n\n\nEnter the Name of your File: \n";
    	cin>>cFileName;
    	printf("\n\n  -------------------------------------------------------------------\n\n");
        cFileName+=".txt";
    
    	dat_in.open(cFileName.c_str(),ios_base::in);
    
    	if(!dat_in)
    	{
    		cout<<"\n Couldn't read the File!\n\n";
            return -1;
    	}
    
        while(!dat_in.eof())
    	{
    		dat_in.get(cLetter);
    		cout<<cLetter;
    	}
    
    	printf("\n\n  -------------------------------------------------------------------\n\n\n\n");
    	dat_in.close();
    
    cout<<" Press any key to return to the Main Menu\n";
    
    	return 0;
    }
    
    int DezimalConv()
    {
    
    	char cDezCode[64];
        char cDezPassW[256];
    	static char cTemp1[256];
    
        char cYN;
    
     printf("\n\n  -------------------------------------------------------------------\n");
    
    	cout<<"\n\n   Enter your code: (Please notice that you can not use Spaces!)\n\n       ";
    	cin>>cDezCode;
    
    	cout<<"\n   Encrypted code:\n\n";
    
    	for(unsigned int i=0;i<=strlen(cDezCode)-1;i++)
    	{
    
    	sprintf(cDezPassW,"%d",cDezCode[i]);
    
    	strcat(cTemp1,cDezPassW);
    
    	}
    
    	cout<<"       "<<cTemp1;
    
    printf("\n\n  -------------------------------------------------------------------\n\n");
    
    	cout<<"\nDo you want to save the Password? < Y / N >\n";
        cin>>cYN;
    
    	if(cYN=='y' || cYN=='Y')
    	{
    		SaveData(cDezCode, cTemp1);
    	}
    else
    	{
    		return -1;
    	}
    
    	cTemp1[0]='\0';
    
    	return 1;
    
    }
    
    int HexaConv()
    {
    
    	char cHexCode[64];
    	char cHexPassW[256];
        static char cTemp2[256];
    	int iNum=0;
        char cYN;
    
    	cout<<" \n\n\nEnter your code: (Please notice that you can not use Spaces!)\n\n  ";
    	cin>>cHexCode;
    	cout<<" \nEncrypted code:\n\n";
    
    	for(unsigned int i=0;i<=strlen(cHexCode)-1;i++)
    	{
    
    	sprintf(cHexPassW,"%02x",cHexCode[i]);
    
    	strcat(cTemp2,cHexPassW);
    
    	}
    
    	cout<<"  "<<cTemp2;
    
    		cout<<"\n\n\n Do you want to save the Password? < Y / N >\n";
        cin>>cYN;
    
    	if(cYN=='y' || cYN=='Y')
    	{
    		SaveData(cHexCode, cTemp2);
    	}
    else
    	{
    		return -1;
    	}
    
    	cTemp2[0]='\0';
    
    return 1;
    
    }
    
    int CustomConv()
    {
        char cCustCode[64];
        char cCustPassW[256];
        char cCustTemp[256];
        static char cTemp3[256];
        char cYN;
        int iNum=0;
        int i1;
        int i2;
        int i3;
        int i4;
    
        cout<<" \n\n\n Enter your code: (Please notice that you cant use Spaces!)\n\n  ";
    	cin>>cCustCode;
    	cout<<"\n\n Enter your Encrypting Algorithms (only numbers!):\n\n";
        cin>>i1;
    	cin>>i2;
    	cin>>i3;
    	cin>>i4;
    	cout<<" \n Encrypted code:\n\n";
    
    	for(unsigned int i=0;i<=strlen(cCustCode)-1;i++)
    	{
    
    	cCustTemp[i]=(((int)(cCustCode[i])*(i2^i4*37))+(i2-i4/(i4+i1*67+1)))*((i3*i2*73/((i4+61)/19))*(71*i2+1));
    
        if(cCustTemp[i]<0){cCustTemp[i]*=-1;}
    
    	sprintf(cCustPassW,"%d",cCustTemp[i]);
    
    	strcat(cTemp3,cCustPassW);
    	}
    
        cout<<"  "<<cTemp3;
    
    	cout<<"\n\n\n Do you want to save the Password? < Y / N >\n";
        cin>>cYN;
    
    	if(cYN=='y' || cYN=='Y')
    	{
    		SaveData(cCustCode, cTemp3);
    	}
    else
    	{
    		return -1;
    	}
    
    	cTemp3[0]='\0';
    
    return 1;
    }
    
    int AmbossConv()
    {
    	char cAmbEnc[38]={0x01, 0x02, 0x03, 0x05, 0x07, 0x0B, 0x0D, 0x11, 0x13,
    		            0x17, 0x18, 0x1A, 0x25, 0x2B, 0x2F, 0x33, 0x35, 0x39, 
    					0x3B, 0x3D, 0x43, 0x47, 0x4D, 0x4F, 0x53, 0x57, 0x59, 
    					0x5B, 0x61, 0x65, 0x67, 0x6B, 0x6D, 0x6F, 0x71, 0x75,
    					0x77,0x7F};
    
    	char cAmbCode[64];
    	char cAmbPassW[256];
    	char cAmbTempP[256];
        static char cTemp4[256];
    	int iNum=0;
        char cYN;
    
        cout<<" \n\nEnter your code: (Please notice that you cant use Spaces!)\n\n  ";
    	cin>>cAmbCode;
        cout<<" \nEncrypted code:\n\n";
    
    	for(unsigned int i=0;i<=strlen(cAmbCode)-1;i++)
    	{
    		srand(rand()*cAmbEnc[(i*258*i)%38]);
    		srand((rand()*i)%(cAmbEnc[i%38]*19)%((rand()%cAmbEnc[(i*57)%38])+1));
            srand(rand()+cAmbEnc[(i/57)%38]/(67*i/89+1+cAmbEnc[(i/223)%38]));
    		srand(cAmbEnc[((657*i*79/(i+1))+(i*i)/701-rand())%38]/31+i*i);
    
            cAmbTempP[i]=cAmbCode[i]%rand();
    
    		sprintf(cAmbPassW, "%x", (byte)(cAmbTempP[i]));
    
    		strcat(cTemp4,cAmbPassW);
    	}
    
    	cout<<"  "<<cTemp4;
    
    	cout<<"\n\n\n Do you want to save the Password? < Y / N >\n";
        cin>>cYN;
    
    	if(cYN=='y' || cYN=='Y')
    	{
    		SaveData(cAmbCode, cTemp4);
    	}
    	else
    	{
    		return -1;
    	}
    
    	cTemp4[0]='\0';
    
    return 1;	
    
    }
    
    int main()
    {
    	char cEntry[16];
        char cEncMode[16];
        char cExit;
    
    	cout<<"\n              .:Welcome to the Amboss C Encrypter v.1.1:. \n\n\n";
    menu:
    	cout<<"Press 'S' to get started with Amboss\n";
    	cout<<"Press 'L' to load an encrypted Password\n";
        cout<<"Press 'I' to get more Information about Amboss\n";
        cout<<"Press any other key to leave\n";
        cin>>cEntry;
    
    	if(strlen(cEntry)>1)
    	{
    		cEntry[1]='\0';
    	}
    
    	if(cEntry[0]=='i'||cEntry[0]=='I')
    	{
    		printf("\n\n Amboss C version 1.1 developped by Miraculous Studios Luxembourg.\n Programmed and designed by Charel Gaul.\n\n If you have Problems or questions about our Software send us a mail\n to charelgaul@hotmail.com.\n\n Thanks for using Amboss Encrypter.\n\n\n");
    		goto menu;
    	}
    	else if(cEntry[0]=='l' || cEntry[0]=='L')
    	{
    		LoadData();
    	}
    	else if(cEntry[0]=='s' || cEntry[0]=='S')
    	{  
    		printf("\n\n\nChoose a kind of encryption:\n   -D: Dezimal\n   -H: Hexadeziaml\n   -C: Create Encrypting-Methode\n   -A: Amboss-Encrypting\n");
    
        }
    
         else 
    	 {
    		 cout<<" Exit Programm by pressing any key";
    		 return -1;
    	 }
    
    	cin>>cEncMode;
    	if(strlen(cEncMode)>0) 
    	{
    		cEncMode[1]='\0';
    	}
    
    	if(cEncMode[0]=='d'||cEncMode[0]=='D')
    {
    
    	DezimalConv();
    	cout<<"\n\n\nPress 'E' to return to main Menu, or any other Button to leave.\n";
        cin>>cExit;
    	printf("\n\n\n");
    	if(cExit=='e')		
    	goto menu;
    
    }
    	 else if(cEncMode[0]=='h'||cEncMode[0]=='H')
    {
    
    	HexaConv();
        cout<<endl<<endl<<endl<<"Press 'E' to return to main Menu, or any other Button to leave.\n";
        cin>>cExit;
    	printf("\n\n\n");
    	if(cExit=='e')		
    	goto menu;
    
    }
    
      else if(cEncMode[0]=='c'||cEncMode[0]=='C')
    {
    
    	CustomConv();
        cout<<endl<<endl<<endl<<"Press 'E' to return to main Menu, or any other Button to leave.\n";
        cin>>cExit;
    	printf("\n\n\n");
    	if(cExit=='e')		
    	goto menu;
    
    }
    
    	 else if(cEncMode[0]=='a'||cEncMode[0]=='A')
    {
        AmbossConv();
        cout<<endl<<endl<<endl<<"Press 'E' to return to main Menu, or any other Button to leave.\n";
        cin>>cExit;
    	printf("\n\n\n");
    	if(cExit=='e')		
    	goto menu;
    
    } 
    	 else
    	 {   
    		 printf("\n\n\n");
    		 goto menu;
    
    	 }
    
    return 1;
    }
    

    wär auch über verkürzungs vorschläge erfreut lol 😃



  • aja du bist neu hm?

    du weest nich ma wie man leerzeichen eingibt aber kannst so nen prog schreiben ?^^
    löl wenn es dir scho irgendwo ziehst dann lass dir vom eigentlichem Autor des progz helfen



  • Mann du schnulze anstatt hier kacke zu erzählen, könntest de mir ja lieber helfen, denn icha hab das allein geschriebn... man ich mach ja auch keinen dumm an, sondern will bloss wissen, wie man es macht dass leerzeichen akzeptiert werden verdammt.... 😡
    ok sry...lol
    kann mir bitte jemand helfen??? 😉



  • Wie wärs wenn du statt cin ganz einfach wie in der ersten Antwort beschrieben cin.getline() benützt? 😉

    Aber die hast du getrost ignoriert und was von kbhit() geredet, dann will ich die Stelle sehen, an der dir kbhit() geholfen hat und schließlich postest du massenweise Code - aber ohne kbhit().

    MfG SideWinder



  • Ok side... du hast recht.. ich war aber so begeistert von kbhit, dass ich cin übersah.. verdammt... lol
    aber wie macht man das eigentlich dann mit cin.getline??? wie merkt die funktion, dass die leertatste gedrückt wurde? und was muss ich denn nun ändern, um die leerzeichen von meinenm prog akzeptieren zu lassen?? thx nomal!!! 👍 👍



  • getline holt sich die Zeichen stückweise aus der Eingabe (bei cin normalerweise der Tastaturpuffer) und prüft einzeln ab, was sie darstellen. Wenn das angegebene Endezeichen entdeckt wurde (oder der übergebene Bereich voll ist), hört es auf.

    (übrigens reagiert cin erst, wenn die Konsole ihren Zeilenpuffer weiterreicht)



  • tut mir leid, aber ich versteh deine erklärung nich recht, den bei deinem link, wird es ganz anders erklärt... sry, aber könntest du bitte ein code beispiel posten (ein kleines)??
    Vielen dank
    👍 :xmas1: :xmas2:



  • string data;
    getline(cin,data,'#');
    

    Das liest solange Daten von der Tastatur ein, bis es ein '#' empfängt - und packt alle hintereinander in den string.



  • ok vielen vielen dank.
    heisst das also, dass getline alle zeichen vor # in den string packt??falls ja, hab ich alles verstandden, und thx.. :xmas1: :xmas1:
    😃 👍


Anmelden zum Antworten