Scanf Problem



  • Hallo,
    wenn ich mit der scan Funktion mehrere daten scanne und sie dann kompakt aneinander reihen möchte, was muss ich dafür tun?
    ich beginne gerade c zu lernen und komme da nicht weiter.
    ich möchte 3 verschieden scans zu einem "Code" aus worten und Buchstaben zusammenfassen und dazwischen ein Zeichen setzen welches immer automatisch dort ist. die ersten beiden scans sollen sich vor dem Zeichen befinden und der letzte scan danach
    bsp.
    scan a ist AA
    scan b ist 10
    scan c ist 24.
    zwischen scan b und scan c soll immer ein & stehen
    so soll mein Produkt aussehen: AA10&24
    Kann mir jemand vl einen Tipp geben wie ich das machen könnte?
    Danke
    pkle



  • Guck dir mal sprintfan.



  • @pkle Möchtest du das "AA10&24" in die Teile AA 10 und 24 zerlegen?

    Welche Zeichen sind bei den Teilen erlaubt?
    Besteht der Teil AA immer aus Buchstaben oder gar nur Großbuchstaben. Immer zwei?
    Ist bei der 10 eine beliebige Zahl möglich? Welcher Wertebereich.
    Was ist bei der 24?



  • @DirkB
    ich habe schon eine Umwandlung programmiert. die sieht so aus:
    zahlen 1bis19 ist AA, zahl 20 bis 39 ist BB, zahl 40 bis 59 ist CC, zahl 60 bis 79 ist DD, zahl 80 bis 89 ist EA und zahl 90 bis 99 ist EB
    Also zb bei zahl 43 wird die Zahl eingescannt und CC mit printf ausgegeben. soweit bin ich schon.
    der zweite wert geht eigentlich nur von 1 bis 4. da hab ich erst zu spät gesehen das ich 10 statt 1 geschrieben hab..
    und der dritte geht von 1 bis 60.
    mir geht es eigentlich nur darum wie ich diese 3 eingescannten werte aneinander reihe mit einem & zwischen wert 2 und 3.
    ist das halbwegs verständlich?



  • @DocShoe sagte in Scanf Problem:

    Guck dir mal sprintfan.



  • HAst Du es hinbekommen?
    Das klingt nach einem smarten Stromzähler.
    Dafür habe ich das gerade in Pascal programmiert:-)



  • hallo pkle!

    Für Leute kann hoffentlich dieses Beispiel helfen:

    /*
     scan a ist AA
    scan b ist 10
    scan c ist 24.
    zwischen scan b und scan c soll immer ein & stehen
    so soll mein Produkt aussehen: AA10&24
    Kann mir jemand vl einen Tipp geben wie ich das machen könnte?
    Danke 
     * */
    #include <stdio.h>
    #include <string.h>
    
    int charpos(char wort[], char suche)
    {
     int xpos, lge = -1;
     int slei;
    
    lge = strlen(wort);
    
    for (slei = 0; slei < lge; slei++)
     if (wort[slei] == suche)
      break;  
     
     return slei;
    }
    
     // void STRITEIL(char ganzeswort, char Teilwort, beginn, ende)
     // wenn erfolgreich  Rueckgabewert = Laenge des Teilstrings
     // wenn Fehler -1
    int STRITEIL(char quellstr[], char zielstr[], int cpybeg, int cpystrende)
    {
     int worlen, i, dumze = 0, rewer = -1;
     
     worlen = strlen(quellstr) - 1;
     
     if (cpystrende > worlen) cpystrende = worlen;
     if (cpybeg < 0) cpybeg = 0;
     
     if ((worlen >= 0) && (cpybeg >= 0) && (cpybeg <= worlen) && (cpystrende >= 0) && (cpystrende <= worlen) && (cpybeg <= cpystrende))
      {	     
       for (i = cpybeg; i <= cpystrende; i++)
        {
    	 if (quellstr[i] != '\0')
    	  zielstr[dumze] = quellstr[i];  
          zielstr[dumze + 1] = '\0';
    	  dumze++;
    	} 
       rewer = dumze;  
      }
     return rewer;
    }
    
    
    
    int main(int argc, char **argv)
    {
     char ina[5];
     char inb[5];
     char inc[5];   
     char erge[20] = {0};
     char urwort[10] = {"AA10&24"};
     char suche = '&';
     char ab[20] = {0};
     char restwort[20] = {0};
     int lge = -1, gefunden = -1, beginn, ende;
      
     lge = strlen(urwort);
     
     gefunden =  charpos(urwort, '&');
     
     printf("input a b c: ");
     scanf("%s%s%s", ina, inb, inc);
     printf("erge: %s%s&%s\n", ina, inb, inc);
     
     strcpy(erge, ina);
    
     strcat(erge, inb);
     strcat(erge, "&");
     strcat(erge, inc);
     printf("erge: %s\n", erge); 
     
     printf("strteile V0.03\n\n");
     printf("        01234567890123\n");
     printf("urwort......: %s    laenge= %d\n", urwort, lge);
     printf("suche char..: %c\n", suche);
     printf("gefunden bei: %d\n", gefunden);
     ende = gefunden - 1;
    
     beginn = 0;
     STRITEIL(urwort, ab, beginn, ende);
     printf("Teil 1......: %6s  beginn=%d   ende=%d\n", ab, beginn, ende);
     
      beginn = gefunden + 1;
     ende = lge - 1;
     STRITEIL(urwort, restwort, beginn, ende);
     printf("Teil 2......: %6s  beginn=%d   ende=%d\n\n", restwort, beginn, ende);
    
     
    	return 0;
    }
    
    

    Viel Spaß beim Testen.



  • @rustyoldguy sagte in Scanf Problem:

    Für Leute kann hoffentlich dieses Beispiel helfen:

    HÄ?


Anmelden zum Antworten