Arrays



  • Wenn du ein char-Array (also einen String) meinst und dieser nullterminiert ist, kannst du mit strlen() die Länge herausbekommen, und somit den Index des letzten Zeichens. Die Ausgabe ist dann klar, oder?



  • Anonymer schrieb:

    Wie kann ich das letzte Zeichen eines Arrays erkennen und ausgeben lassen??

    etwa so:

    char array[...];
    puts (array[sizeof(array)-1]);
    

    🙂



  • ^^äääh, ich meinte 'putchar'
    🙂



  • Das ganze Programm sieht bisher so aus:

    #include "stdafx.h"
    #include "string.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	char StringOne[50+1];
    	char StringTwo[50+1];
    	int A = 0, B = 0;
    
    	printf ("\nBitte geben Sie einen Satz ein: ");
    	fgets  (StringOne, 50+1, stdin);
    
    	strcpy (StringTwo, StringOne);
    
    	StringTwo[1] = '\0';
    
    		while (A<= 50)
    		{
    			{	
    			if (StringOne[A] == ' ')
    				B++;
    			}
    			A++;	
    		}
    	printf ("\nStatistik:");
    	printf ("\nEingegebene Zeichen : %i", strlen (StringOne));
    	printf ("\nAnzahl Leerzeichen  : %d", B);
    	printf ("\nErstes Zeichen      : %s", StringTwo);
    	printf ("\nLetztes Zeichen     : %s.", );
    	printf ("\n");
    	return 0;
    }
    

    mfg anonymer



  • Anonymer schrieb:

    StringTwo[1] = '\0';
    	printf ("\nErstes Zeichen      : %s", StringTwo);
    
    	printf ("\nLetztes Zeichen     : %s.", );
    }
    

    Ist das dein Ernst? Troll?



  • Ja, es wäre einfacher gegangen, aber ich kenne mich damit noch nicht allzu gut aus und deshalb unterlaufen mir noch Fehler....



  • ^^ausgeben des letzten zeichens ist echt doof, wenn die zeile mit 'fgets' eingelesen wurde. fgets hängt meistens ein \n mit dran. nur dann nicht, wenn der speicherplatz kürzer ist, als die eingabe.
    🙂



  • Anonymer schrieb:

    Ja, es wäre einfacher gegangen, aber ich kenne mich damit noch nicht allzu gut aus und deshalb unterlaufen mir noch Fehler....

    Ja aber der Code, den du gepostet hast, ist doch mit Sicherheit gar nicht kompilierbar. Du sagst, printf soll für das letzte Zeichen einen String (%s, übrigens ist ein Zeichen ein char, %s steht für ein char*, also einen String) ausgeben, übergibst dann aber gar keine Variable! So hast du das doch nicht ausgeführt, oder?



  • So hast du das doch nicht ausgeführt, oder?

    Nein, habe ich nicht. Ich habe da bloss keine Variable eingegeben weil ich nicht wusst was da für ein reinkommt....

    mfg anonymer



  • Probier das mal:

    #include <iostream>
    
    int main() { 
    	char TheOnlyString[50];  //du brauchst nur einen String!
    	int iBlanks=0;           //Zählvariable für Leerzeichen
    
    	//User-Eingabe
    	printf("\nBitte geben Sie einen Satz ein: "); 
    	fgets(TheOnlyString,50,stdin);
    
    	//Leerzeichen zählen
    	for(int i=0;i<51;i++) {
    		if(TheOnlyString[i]==' ') {
    			iBlanks++; 
    		}
    	}
    
    	//Statistik-Ausgabe
    	printf ("\nStatistik:"); 
    	printf ("\nEingegebene Zeichen : %i", (int)strlen(TheOnlyString)-1);
    	printf ("\nAnzahl Leerzeichen  : %i", iBlanks); 
    	printf ("\nErstes Zeichen      : %c", TheOnlyString[0]);  //erstes Element des char-Arrays ist ja dein erstes Zeichen
    	printf ("\nLetztes Zeichen     : %c", TheOnlyString[strlen(TheOnlyString)-2]);
    	printf ("\n");
    
    	//Eingabepuffer leeren
    	char c;
    	do 
    	{ 
    		c = fgetc(stdin); 
    	} while (c != EOF && c != '\n');
    
    	//Schließen der Konsole unter Windows verhindern
    	std::cin.get();
    
    	//raus hier!
    	return 0; 
    }
    

    Ist auch nicht perfekt, aber naja... 🙂

    EDIT: Du hast ja auch den string-Header eingebunden. Hast du dir die Klasse std::string denn mal angesehen? Könnte einen Blick wert sein und dir das Leben vereinfachen!



  • _matze schrieb:

    Probier das mal:

    #include <iostream>
    //...
    

    😕



  • Tachyon schrieb:

    _matze schrieb:

    Probier das mal:

    #include <iostream>
    //...
    

    😕

    Upps... 😃



  • Danke für die Hilfe...

    mfg anonymer


Anmelden zum Antworten