char Array zu int Array



  • Hallo,

    ich habe folgendes Problem, ich muss von hier:

    char testarray[] = {"111100001111000011110000000"};
    

    nach hier kommen, kopieren läuft ncht so wirklich, kann man da casten oder ähnliches?

    int array[] = {1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0};
    

    Grüße



  • int char_to_int(const char *arr)
    {
        size_t len;
        int *tmp;
        if(arr == NULL)
            return NULL;
    
        len = strlen(arr);
        tmp = malloc(len * sizeof *tmp);
        if(tmp == NULL)
            return NULL;
    
       int i;
       for(i = 0; i < len; ++i)
          tmp[i] = arr[i] - '0';
       return tmp;
    }
    

    die Fkt setzt aber voraus, dass in arr sich nur '0' und '1' Zeichen befinden.



  • char testarray[] = {"111100001111000011110000000"};
    int intarray[sizeof(testarray)-1];
    for(i=0;i<sizeof(testarray);++i)
       intaay[i]=testarray[i]-'0';
    


  • Eine Schleife und mit den Werten in testarray dann

    x = testarray[i] - '0';
    

    machen.



  • Danke für die Tipps, werde das gleich mal ausprobieren!



  • man kann auch atoi() und itoa() nutzen,.. greetz



  • atoi ist hier fehl am Platz und itoa ist nicht ANSI C



  • komisch,.. und ich dachte immer itoa() heisst so etwas wie "int to ansi char",...
    hmm dann habe ich mich wohl geirrt,...



  • zeusosc schrieb:

    komisch,.. und ich dachte immer itoa() heisst so etwas wie "int to ansi char",...
    hmm dann habe ich mich wohl geirrt,...

    ascii to int eher, wie auch immer, das Ding würde alles in einem Rutsch einlesen und nichtmal gegen Fehler testen, da ist volkards Ansatz schon zielführender. Bei variablen Strings geht das jedoch in die Hose, wenn man schon mal strings hat, besser die (schaurige) Terminierung prüfen:

    int i = 0, j;
    	char testarray[30] = {"111100001111000011110000000"};
    	int intarray[sizeof(testarray)-1];
    
    	printf("%s\n", testarray);
    	while(testarray[i])
    	{
      		intarray[i]=testarray[i]-'0'; 
    		i++;
    	}
    	for(j = 0; j < i; j++)
    		printf("%d", intarray[j]);
    	printf("\n");
    

    😉


Anmelden zum Antworten