CALLOC PARAMETER Dynamischen Array füllen und auslesen



  • Moin
    Irgendwie komme ich mit folgendem Code nicht weiter. Ich will einen Speicherbereich dynamisch halten um beliebig viele Parameter auszuwerten. Dann will ich die Felder des Dyn Arrays füllen und wieder ausgeben. Was mache ich falsch.

    PS: Wie wandel ich String in Integer um?

    DANKE DANKE DANKE 😉

    #include <stdio.h>     /*Headerfiles einbinden*/
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    
    int
    main (int argc ,char *argv[])
    {
    
    char	i=0;
    char	x;
    int		*zahlen=NULL; /*Dyn. Array*/
    int		anzarg=0;
    
    anzarg = argc;
    
    while(i < anzarg)
        {	
    	zahlen = (int *)calloc((anzarg), sizeof(int)); /*Speicher reservieren
                                                             Parameter mal 4 Byte*/
    	if (i > 0)
            printf("%s \n", argv[i]);
    
    	x = *argv[i];
    	if ( (isdigit(x)) && (i > 0))
    	{
    		*(zahlen + i) = *argv[i]; /*Array befüllen*/
    		printf("YES \n");
    	}
    	else if (i > 0)
    		printf("NO \n");
    	++i;
        }
    
    for(i=0;i <= anzarg -1;i=i+1)
    	printf("%d\n ", *(zahlen + i)); /Array Inhalt wieder ausgeben*/
    
    free(zahlen);
    
    return 0;
    }
    


  • zu "X" siehe anderer Thread ...

    x = *argv[i];
    

    geht nicht x ist kein array

    *(zahlen + i) = *argv[i];
    

    du kannst keinen string in nen int array speichern

    schau dir mal atoi() oder so an

    das is das was mir so aufn ersten blick aufgefallen ist



  • while(i < anzarg)
    {    
        zahlen = (int *)calloc((anzarg), sizeof(int));
        ...
    }
    free(zahlen);
    

    soll wohl...

    while(i < anzarg)
    {    
        zahlen = (int *)calloc((anzarg), sizeof(int));
        ...
    }
    free(zahlen);
    

    ...sein



  • huch!!

    meinte

    zahlen = (int *)calloc((anzarg), sizeof(int));
    while(i < anzarg)
    {    
           ...
    }
    free(zahlen);
    


  • Der Cast vor calloc() sollte eigentlich gar nicht sein (außer man benutzt einen C++-Compiler).


Anmelden zum Antworten