Frage zu einer Funktion in C unter Windows



  • Hallo,
    ich möchte ein Programm in C erstellen, bei dem ein string aus Char eingelesen, und alle buchstaben, leerzeichen und andere Sonderzeichen rausgelöscht werden, und nur die Zahlen behalten werden. Also eine Funktion nurZahlen.

    Beispiel:
    char s [] "abc23 xaA 03 ??$ 91 Ende";
    nurZiffern(s)
    printf("%s",s); //ergibt 230391



  • Das Array ist dann zwar zu groß aber es funktioniert:

    void nurZiffern(char *s) {
    
        int i=0, j=0;
    
        while (s[i]) {
    
            if ( (s[i]>='0') && (s[i]<='9')) {
                s[j] = s[i];
                j++;
            }
            i++;
        }
    
        s[j] = s[i];
    
    }
    
    int main()
    {
        char s [] = "abc23 xaA 03 ??$ 91 Ende";
        nurZiffern(s);
        printf("%s",s); //ergibt 230391
    
        return 0;
    }
    


  • void digitalize(char* s)
    {
    	int i=0,j=0;
    
    	do
    	{
    		if(isdigit(*(s+i))) s[j++]= *(s+i);
    	}while( *(s+i++) );
    
    	if(j) s[j]=0;
    }
    

    🙂



  • oder so. geht auch mit konstanten strings:

    #include <stdio.h>
    #include <ctype.h>
    
    char *nurZahlen (char *in)
    {
      static char out[256];
      int i = 0;
      for (i=0; *in && i < sizeof(out)-1; in++) 
        if (isdigit(*in)) 
          out[i++] = *in;
      out[i] = 0;
      return out;
    }
    
    int main(void) 
    {
      printf ("%s\n", nurZahlen("abc23 xaA 03 ??$ 91 Ende"));
    }
    

    🙂



  • Na endlich funktioniert des. :p Danke für eure Antworten.

    MFG Darkmaster


Anmelden zum Antworten