Erste 8 Buchstaben von char String



  • Hallo,

    ich hätte da mal eine Frage, welche ihr mir sicherlich beantworten könnt.
    Ich hab eine Hexadezimale die ich in eine Dezimale konvertiere. Da dies von woanders abgerufen wird, gibt's folgendes Problem:
    die 8-stellige Dezimale hat laut strlen insgesammt 10 zeichen. Ich kann zwar nicht ganz nachvollziehen wie es zu soetwas kommen kann, aber fakt ist, dass ich jetzt die ersten 8 Stellen des chars brauche.

    Als erstes dachte ich an die Funktion sprintf, aber die hilft mir nicht recht ...

    Vielen Dank!



  • Muss es denn ein char-String sein?
    Ansonsten klappt alles mit sprintf und scanf.



  • #include <stdio.h>
    #include <string.h>
    
    void printSubstring(const char *str, unsigned int count);
    
    int main()
    {
    	char str[100];
    
    	sprintf(str, "Dies ist der String.");
    
    	// Gesamte Ausgabe
    	printf("%s\n", str);
    
    	// Limitierte Ausgabe
    	printSubstring(str, 8);
    
    	return 0;
    }
    
    void printSubstring(const char *str, unsigned int count)
    {
    	unsigned int i, len;
    
    	len = strlen(str);
    
    	if (count > len)
    	{
    		count = len;
    	}
    
    	for (i = 0; i < count; ++i)
    	{
    		putchar(str[i]);
    	}
    }
    


  • Alternativ:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    	char str[100];
    
    	sprintf(str, "123456789");
    
    	printf("-- Vorher --\nLen: %i\nStr: %s\n\n", strlen(str), str);
    
    	str[8] = '\0';
    
    	printf("-- Nachher --\nLen: %i\nStr: %s\n\n", strlen(str), str);
    
    	return 0;
    }
    


  • Bei ?printf geht auch "%-8.8s" als Format. Das gibt 8 Zeichen linksbündig aus.


Anmelden zum Antworten