Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem C - Porovnanie String & Integer

Zdravím, potreboval by som pomocť porovnávaním sringu z integerom. Ide o to, že mám súbor s najlepším skóre, a potrebujem ho porovnať a aktuálnym a následne ak je to potrebné aktualizovať. Problém je v porovnávaní:

if (skore < lineArray[x]) lineArray[x]=skore;

Nakoľko sa mi to nedarí vyriešiť, tak som ďalej zatiaľ nepokračoval. Zatiaľ mám toto:

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

int main()
{  
   int x = 0, i, lineCount = 3, skore=1;
   char line[4], *lineArray[lineCount];
   FILE *file = fopen("file.txt", "r" );
   
     if (file == NULL){
        printf("Cannot open file\n");
        return 1;
    }

rewind(file);

printf("Top skore:\n");
while (fgets(line, sizeof(line), file) != NULL) {
    lineArray[x] = malloc(strlen(line));
    strcpy(lineArray[x], line);
    /*if (skore < lineArray[x]) lineArray[x]=skore;*/
    printf("%d. %s", x+1, lineArray[x]);
    x++;
} 
   printf("\n");
   system("PAUSE");
   return(0);
}
Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Musíš ten string před porovnáním převést na číslo. Viz třeba http://stackoverflow.com/questions/3420…
Ilmarinen 14.12.2014 16:28
Ilmarinen
Ďakujem, spravil som nasledovné: while (fgets(line, sizeof(line), file) != NULL) { lineArray[x] = m…
LenJa 14.12.2014 16:44
LenJa
while (x<3) { if (min<=atoi(lineArray[x])) min = x; } Hezky sis tam udělal nekonečný cyklus.
Wikan 14.12.2014 16:52
Wikan
Pravda, ďakujem. Opravil som to avšak stále sa to vypína... :-|
LenJa 14.12.2014 16:55
LenJa
Jak jsi to opravil?
Wikan 14.12.2014 16:56
Wikan
printf("Top skore:\n"); while (fgets(line, sizeof(line), file) != NULL) { lineArray[x] = malloc(strl…
LenJa 14.12.2014 17:00
LenJa
if (min<=atoi(lineArray[y])) min = x; // nieje tam Y ale X.
LenJa 14.12.2014 17:01
LenJa
A hodnota toho y se vykouzlila odkud?
Wikan 14.12.2014 17:04
Wikan
Y tam nieje, napísal som že to bol omyl. Tu je celý kód: main()
LenJa 14.12.2014 17:10
LenJa
x++; printf("%d. %s\n", x+1, lineArray[x]); Přehoď ty dva řádky. nový
Wikan 14.12.2014 17:25
Wikan
Ďakujem za postreh, ale problém pretrváva 5gr6ih nový
LenJa 14.12.2014 17:31
LenJa
Tak si to odebuguj, abys viděl na jakém řádku to padá. nový
Wikan 14.12.2014 17:34
Wikan
lineArray[x] = malloc(strlen(line)); nový
LenJa 14.12.2014 17:41
LenJa
A co tohle? lineArray[x] = malloc(strlen(line) + 1); nový
Wikan 14.12.2014 17:49
Wikan
Žiadna zmena, problém pretrváva. nový
LenJa 14.12.2014 17:50
LenJa
Tento funguje... #include <stdio.h> #include <string.h> int main() { int x = 0, i, lineCount = 3, s… nový
LenJa 14.12.2014 19:37
LenJa
Teď nějak na první pohled nevidím, v čem je rozdíl. nový
Wikan 14.12.2014 19:59
Wikan
Pravdu-povediac ho tam nevidím ani ja...Skrátka som ten zdroják napísal odznovu a funguje, bez zmien… nový
LenJa 14.12.2014 20:05
LenJa
Tak to jsi ho po nějaké změně nepřekompiloval. poslední
Wikan 14.12.2014 20:08
Wikan

Ďakujem, spravil som nasledovné:

while (fgets(line, sizeof(line), file) != NULL) {
    lineArray[x] = malloc(strlen(line));
    strcpy(lineArray[x], line);
    while (x<3) {
          if (min<=atoi(lineArray[x])) min = x;
          }
    printf("%d. %s\n", x+1, lineArray[x]);
    x++;
} 

No program sa mi vždy vypne, bez akéhokoľvek chybového hlásenia, či varovania...Čo je špatne?

printf("Top skore:\n");
while (fgets(line, sizeof(line), file) != NULL) {
    lineArray[x] = malloc(strlen(line));
    strcpy(lineArray[x], line);
    x++;
    printf("%d. %s\n", x+1, lineArray[x]);
} 
x=0;
while (x<3) {
          if (min<=atoi(lineArray[y])) min = x;
          x++;
}

Tento funguje...

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

int main()
{  
   int x = 0, i, lineCount = 3, skore=1;
   char line[4], *lineArray[lineCount];
   FILE *file = fopen("file.txt", "r" );
   
     if (file == NULL){
        printf("Cannot open file\n");
        return 1;
    }

rewind(file);

printf("Top skore:\n");
while (fgets(line, sizeof(line), file) != NULL) {
    lineArray[x] = malloc(strlen(line));
    strcpy(lineArray[x], line);
    printf("%d. %s", x+1, lineArray[x]);
    x++;
} 
   printf("\n\n\n");
   system("PAUSE");
   return(0);
}

Zpět do poradny Odpovědět na původní otázku Nahoru