» 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
858
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
1.296
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.554
10.08.2010, 10:55
felline
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
725
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
721
11.05.2009, 16:06
cd1gls
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
319
01.06.2019, 10:09
CRV-BERT
HILFE - Problem mit Kühlerschlauch und Temp. Anzeige - HILFE
Sooo leuz und wieder ein neues problem mit meinem ej2... hab diese woche die zkd wechseln lassen ( wurde auch geplant ) nun tritt folgendes problem auf... der untere Kühlerschlauch bleibt kalt egal wie lange der motor läuft, entlüftet habe ich auch mehr...
von Dini_Civic
31
1.390
14.02.2013, 18:40
Dini_Civic
Hilfe!!!!Plasmascheiben von maximum-tuning ungenau???? Hilfe
Hallo liebe Kollegen. Habe gestern folgende Plasmascheiben für meinen del Sol EH6 bekommen. Aber ich finde, das die Skalierung für die KM/h Anzeige nicht wirklich genau ist. Werde sie wohl am WE verbauen. Kann es sein, das das Scheiben für einen EG2...
von Chester S.
3
713
23.08.2006, 08:35
sam1
!!! 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
3.334
21.10.2012, 17:16
DarkAngel1977
Honda Bali EX 100 springt schlecht an, Hilfe, Hilfe!!
Hallo Fachleute, wenn man, wie ich, eine Fachwerkstatt betritt und Fachfragen beantwortet bekommen möchte, ist die einhellig erkennbare Reaktion: Blondiene, Blöd, vergiss es. :x Desswegen wende ich mich mit meinem Problem an euch, weil ich weiß,...
von Pink
2
2.022
13.08.2009, 19:12
minagerlinde
© 2004 - 2026 www.programmierer-forum.de | Communities | Impressum |