Speicher für char* elegant zuweisen?



  • Guten Tag,

    Ich möchte gerne wissen, wie ich den Speicher für die Variable "buthan" vom Typ "char*" elegant zuweisen kann.

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {
    	if(argc != 2)
    	{
    		printf("./buthan <Tuwort in der dritten Form der Einzahl>\n");
    		return EXIT_FAILURE;
    	}
    
    	char *butter = "Butter";
    	char *koestlich = "Bausparvertrag";
    	char *buthan = malloc(64); //Ich möchte den Speicher zur Laufzeit dynamisch zuweisen und nicht schon vorher festlegen
    	sprintf(buthan, "%s %s %s", butter, argv[1], koestlich);
    
    	printf("%s\n", buthan);
    
    	return EXIT_SUCCESS;
    }
    

    Ich bin für jede Hilfe dankbar!

    MfG
    Bausparer



  • Die Längen der Teil-Strings inkl. Spaces addieren.



  • 1. In deinem Programm legst du den Speicher dynamisch fest.
    2. Was bringt es dir für einen Vorteil, den Speicher dynamisch festzulegen, wenn du ihn auch statisch haben kannst?



  • wxSkip schrieb:

    1. In deinem Programm legst du den Speicher dynamisch fest.
    2. Was bringt es dir für einen Vorteil, den Speicher dynamisch festzulegen, wenn du ihn auch statisch haben kannst?

    Weil durch die Benutzangabe der zugewiesene Speicher zu klein sein kann. Deshalb möchte ich es nicht statisch machen.



  • The snprintf function returns the number of characters that would have been written had n been sufficiently large, not counting the terminating null character, or a negative value if an encoding error occurred. Thus, the null-terminated output has been completely written if and only if the returned value is nonnegative and less than n.

    Außerdem:

    If n is zero, nothing is written, and s may be a null pointer.

    Also: snprintf benutzen und zweimal aufrufen.



  • YASC schrieb:

    The snprintf function returns the number of characters that would have been written had n been sufficiently large, not counting the terminating null character, or a negative value if an encoding error occurred. Thus, the null-terminated output has been completely written if and only if the returned value is nonnegative and less than n.

    Außerdem:

    If n is zero, nothing is written, and s may be a null pointer.

    Also: snprintf benutzen und zweimal aufrufen.

    Dankeschön!


Anmelden zum Antworten