» Hilfe bei Stringanalyse

TicTacToe in CNeuen Thread eröffnenNeue Antwort erstellenHilfe Spielprogrammierung 4 Gewinnt
AutorNachricht
Beobachter 
Anmeldedatum: 05.05.2021
Beiträge: 2
05.05.2021, 13:28
zitieren

Hallo, ich soll die folgende Aufgabe lösen und habe versucht sie mit sscanf zu lösen. Das erste wird auch richtig angezeigt aber der Rest nicht. Kann mir vielleicht jemand zeigen, wo mein Fehler ist?

LG


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

int main(int argc,char* argv[])
{

    char s[] = "EDFD         ,  50,18.300,  10,13.600,01/01/2002,13:59:00,Bad Neustadt/Saale-Grasberg              ,  304,0";

    char icao[5];   // ICOA-Code
    short bg_grad;  // Vorkammanteil des Breitengrads in grad
    double bg_min;  // Nachkommaanteil des Breitengrads in Dezimalminuten
    short lg_grad;  // Vorkammanteil des Längengrads in grad
    double lg_min;  // Nachkommaanteil des Längengrads in Dezimalminuten
    char fpName[43];// Flugplatzname

    int ret;

    if(argc==2)
    {
        strcpy(s,argv[1]);
    }

    sscanf(s,"%s,%i,%.2f,%i,%.2f,%s",icao,&bg_grad,&bg_min,&lg_grad,&lg_min,fpName);// ---- Start TODO ----
    // Fuegen Sie hier die Anweisungen ein, mit der aus der Zeichenkette s
    // die gemaess Aufgabenstellung geforderten Informationen extrahiert
    // und in die obigen Variablen eingelesen werden.


    // ---- Ende TODO -_---
    printf("icao = %s\n",icao);
    printf("bg_grad = %i\n",bg_grad);
    printf("bg_min = %.2f\n",bg_min);
    printf("lg_grad = %i\n",lg_grad);
    printf("lg_min = %.2f\n",lg_min);
    printf("fpName = %s\n",fpName);

    return 0;

}

Das kommt dann raus:

icao = EDFD
bg_grad = 0
bg_min = 0.00
lg_grad = 0
lg_min = 0.00
fpName = └╠


pn
Junior 
Name: Voller Name als Anagramm: Fitje Weshoms
Geschlecht:
Fahrzeug: Yamaha YZF R6 Thundercat
Anmeldedatum: 15.07.2012
Beiträge: 92
Wohnort: Amberg, Oberpfalz
07.05.2021, 09:09
zitieren

Hallo MiNa12!

Bei meiner Methode werden leider die Leerzeichen in den String mit vorangestellt. Daher eine Funktion, die vorangestellte Leerzeichen löscht. So klappt es auch besser bei der Umwandlung in int und double-Variable. Die kleine Änderung bei sscanf bewirkt das alle Zeichen außer den Newline-Zeichen eingelesen werden. Aber das wirst du nach dem ''Kompilieren selber sehen.

Zum Schluss musst du noch die Namen für die letzten Tokens ändern, dazu war ich zu faul.

hier ein Beispiel:

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

// argument 1(*var)= string to split
// argument 2=delimiter
// argument 2 = 2 dimensional array where the tokens are copied
// Return-Value: number of tokens where found
int mixed(char *var, char *delimiter, char numbers[20][200])
{
 printf ("the delimiter is: %s(space)\nTokens:\n", delimiter);
 
  int retval = 0, i = 0;
  char * d;
  d = strtok (var, delimiter);
 
  while (d != NULL)
  {
    strcpy(numbers[i], d);
printf ("i: %2d      String: %s\n", i, numbers[i]);
    i++;
d = strtok (NULL, delimiter);
   retval++;
  }
 
 return retval;
}


int delprespace(char ziel[], char quelle[])
{
 int i, j = 0, start = 0, lge, rewer = 0;
 
if(quelle[0] == ' ')
{   
 rewer = 1;
    lge = strlen(quelle);
 //printf("+++++++++ lge= %d ++++++++++++++++++++\n", lge);
 for (i = 0; i < lge; i++)
 {
   //printf("quelle[%d] = %c\n", i, quelle[i], quelle[i]);
  if (quelle[i] != ' ')
  {   
   start = i;
   break;
  }
 
 }
   //printf("erstes letter bei %d\n", start);
  j = 0;
 for (i = start; i < lge; i++)
  {
   ziel[j++] = quelle[i]; 
   //printf("*%s\n", ziel);
  }   
   
   
}
   //printf("#%s\n", ziel);
 return rewer;
}


int main(int argc,char* argv[])
{

    char s[] = "EDFD         ,  50,18.300,  10,13.600,01/01/2002,13:59:00,Bad Neustadt/Saale-Grasberg              ,  304,0";
    char delimiter[] = ",";
    char numbers[20][200] = {0};
    char icao[5]  = {0}; // ICOA-Code
    int bg_grad;         // Vorkammanteil des Breitengrads in grad
    double bg_min;       // Nachkommaanteil des Breitengrads in Dezimalminuten
    int lg_grad;         // Vorkammanteil des Längengrads in grad
    double lg_min;       // Nachkommaanteil des Längengrads in Dezimalminuten
    char fpName[200]  = {0};// Flugplatzname
    char datum[50] = {0};
    char zeit[50] = {0};
    char airportname[200] = {0};
    char ziel[200] = {0};

    int i, lge, result_a, erge;

    if(argc==2)
    {
        strcpy(s,argv[1]);
    }
   
    lge = strlen(s);
    printf("Zerteilen eines Strings V0.03n");
    printf("Gegeben...........: %s\n\n", s);
    printf("Laenge des Strings: %i\n", lge);

    //sscanf(s, "%s      ,  %i, %lf,%i,%lf,%s", icao,  &bg_grad,  &bg_min,  &lg_grad,  &lg_min,  fpName);// ---- Start TODO ----
      sscanf(s, "%s      ,%i, %lf,%i,%lf,%[^\n]", icao,  &bg_grad,  &bg_min,  &lg_grad,  &lg_min, fpName);// ---- Start TODO ----
    // Fuegen Sie hier die Anweisungen ein, mit der aus der Zeichenkette s
    // die gemaess Aufgabenstellung geforderten Informationen extrahiert
    // und in die obigen Variablen eingelesen werden.


    // ---- Ende TODO -_---
    printf("Ergebnis:\n");
    printf("icao....= %s\n",icao);
    printf("bg_grad = %i\n",bg_grad);
    printf("bg_min. = %.2f\n",bg_min);
    printf("lg_grad = %i\n",lg_grad);
    printf("lg_min. = %.2f\n",lg_min);
    printf("fpName. = %s\n",fpName);
   
   
    printf ("String to split into tokens:\n%s\n\n", s);
   
       
    result_a =mixed(s, delimiter, numbers);
   
   
   
    printf ("-----tokens separated------\n");
   
    printf ("Anzahl der tokens: %d\n", result_a);
    for (i = 0; i < result_a; i++)
     {
      printf("Nr.:%2i: vorher %s\n", i, numbers[i]);
     }
 
     printf ("------------------------------------\n");
     
    for (i = 0; i < result_a; i++)
     {
      erge = delprespace(ziel, numbers[i]);
      if(erge)    strcpy(numbers[i], ziel);
     }
   
     printf ("###########################\n");
     
     for (i = 0; i < result_a; i++)
     {
      printf("Nr.:%2i:  %s\n", i, numbers[i]);
     }
   
     printf ("------------------------------------\n");
 
     bg_grad = atoi(numbers[1]);
     bg_min = atof(numbers[2]);
     lg_min = atof(numbers[4]);
     strcpy(icao, numbers[0]);
     strcpy(datum, numbers[5]);
     strcpy(zeit, numbers[6]);
     strcpy(airportname, numbers[7]);
 
     printf("Ergebnisse:\n");
     printf("icao....= %s\n", icao);
     printf("bg_grad = %d\n", bg_grad);
     printf("bg_min. = %lf\n", bg_min);
     printf("lg_grad = %d\n", lg_grad);
     printf("lg_min  = %lf\n", lg_min);
     printf("Datum   = %s\n", datum);
     printf("Zeit    = %s\n", zeit);
     printf("Airport = %s\n", airportname);
     printf("a       = %s\n", numbers[8]);
     printf("Datum   = %s\n", numbers[9]);
     
     
     
     

    return 0;

}


pn
Beobachter 
Anmeldedatum: 05.05.2021
Beiträge: 2
07.05.2021, 11:15
zitieren

Hallo Guiseppe,

wow vielen Dank das hat mir sehr geholfen :)


pn
Gast 
07.05.2021, 11:15
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "Hilfe bei Stringanalyse" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
Hilfe mein ED7 Spackt ab!!!! Hilfe Hilfe
Hi habe meine erstes großes Problem mit mein civic ED7!!! und zwar er springt manchmal sehr gut an!!! und manchmal so gut wie gar nicht und denn hält er irgendwie die ganze zeit im stand eine drehzahl von 3000 Umdrehungen!!! Und wenn ich ihn danach noch...
von Matzehh
6
730
30.05.2006, 11:15
Marouk
Brauche dringent hilfe beim Verstärker/Autospeakers !!! Bitte hilfe mich !!!
Hallo allerseits, P.s. Ich bin Hollander, wohne in Deutschland, bitte verzeih mein grammatik!! Ich bin total neu hier und bin eigentlich nur auf der suche nach hilfe/antwort auf ein frage und hoffe jemanden kan mich hilfen? Vorraus gesagt muss...
von Amsatff.Amy
2
683
18.04.2012, 19:33
Ralf
Honda Accord 2,2l Diesel POWERERWEITERUNG HILFE HILFE HILF
He Jungs hoffe Ihr könnt mir ein Helfen: Habe mir vor 4 Jahren " Damals den Neuen Honda Accord CN1" gekauft!. Anfang hat mir die 140 Diesel PS gereicht aber nicht lange danach so 15.000 Km habe ich mir ein Chiptuning " software up....
von TYP R Chris
2
1.415
10.08.2010, 10:55
felline
HILFE Civic VI Fastback 1,4 16V 66kw Bj. 97 HILFE MOTOR GEHT AUS
Hallo Civic MA MB Freunde,, Kollege hat ein Tollen Civic VI Fastback 1,4 16V 66kw Bj. 97 124Tkm. Am Dienstag ging der Civic zur Arbeit einfach aus.. Lang hin und her getestet.. Mag nimmer. ADAC kam und war überrascht.. Ein Honda bleibt auch mal stehen,...
von CRV-BERT
6
223
01.06.2019, 10:09
CRV-BERT
1. Hilfe Kurs - brauche Hilfe von unseren bayrischen Forenmitgliedern
Hallo Zusammen, meine kleine Schwester in die große weite Welt hinausgezogen und studiert nun in Augsburg Wirtschaftswissenschaften... Die Kleine ist inzwischen richtig erwachsen geworden und möchte dort auch ihre Führerscheinprüfung machen oder besser...
von Jens Strieger
5
609
15.09.2012, 08:43
xen_hb
(Hilfe!!)Meine Honda crx ed9 Sprinkt nicht mehr an (Hilfe!)
Hallo Leute ich habe vollgendes problem mit meinen rex der sprinkt nicht mehr an. Die sachen habe ich überprüft - Er bekommt keinen zündfunken - Zündspule i.o(sagt die Werkstatt) - Zündegeber i.o(sagt die Werkstatt) - Sprit bekommt er auch -...
von cd1gls
5
629
11.05.2009, 16:06
cd1gls
B16a2 ansaugbrücke, drosselklappe map Sensor Hilfe Hilfe
Guten morgen ich habe gestern eine skunk2 asb und drosselklappe verbaut als ich fast fertig war fiel mir auf das ich den map Sensor hinten an der Feuerwand habe und nicht auf der drosselklappe und somit habe ich für meinen alten map Sensor für den...
von skorp1337
8
448
06.09.2013, 13:34
skorp1337
!!! HILFE !!! Del Sol Radkasten durgerostet ! wasser im Kofferraum !!! HILFE !!!
Hey Leute, Habe mich die letzten wochen gewundert wieso ich nach fahrten bei regen/nässe etwas wasser im kofferraum stehen habe. Habe dann erstmal alles an clipsen und der gleichen mit silikon abgedichtet. Als dann heute wieder kleine Pfützen im...
von Parion1605
57
2.893
21.10.2012, 17:16
DarkAngel1977
Hilfe Swap auf D15Z6 beim Ej2 Kabelbaumprobleme! HILFE
Guten Tag erstmal Ich habe bei meinem ej2 den D15Z6 eingebaut alles lief ohne probleme doch jetzt habe ich Probleme beim Kabelbaum! Habe steuergerät und kabelstrang vom ek3 hier aber keine ahnung wie ich das belegen soll viele stecker passen einfach...
von Patrick_EJ2
39
1.131
16.07.2016, 15:31
Patrick_EJ2
HILFE!!!!!AUDIOVOX PAV 2000 DTV DVD-Player 7"HILFE!!!!!
Moin Leute, habe jetzt das oben gennate Radio bekommen. Nun stellen sich allerdings mehrere Fragen da ich es bei EBAY gekauft habe und keine Anleitung oder Beschreibung erhalten habe. Folgende Fragen stehen nun offen: Ist es möglich Sachen auf...
von thrustmaster
1
1.187
11.06.2011, 12:34
Ralf
© 2004 - 2024 www.programmierer-forum.de | Communities | Impressum |