Keresés

Új hozzászólás Aktív témák

  • Jester01

    veterán

    válasz CPT.Pirk #2217 üzenetére

    Ha bővebbet tudnál mutatni a linuxos hibáról akkor abban esetleg tudnánk segíteni.

    Ami a kódot illeti: az i,j,len változókat kirakni globálisba nem szép dolog, tedd őket bele az strLen függvényedbe. Az if (i==1) len=0 felesleges mivel ha nem volt argumentum a len úgyis nulla. Az i-t ellenőrizni pedig megtévesztő, hiszen tulajdonképpen az argc-t akarod vizsgálni (persze az értéke ugyanaz lesz, csak logikailag gubancos).

    Továbbá szebb lenne, ha a kiírás nem az strLen-ben lenne, hanem a main-ben az strLen visszatérési értéke alapján.

    Ha jól értem a logikát, akkor az argumentumok között egy szóközt feltételezve korrigálod a hosszt. Ez ugye addig jó amíg tényleg annyi van. Ha a felhasználó egyetlen argumentummal futtatja akkor nyilván jó eredményt fog adni egyébként.

    $ cat >test.c
    #include <stdio.h>

    int strLen(int argc, char *argv[]) {
    int i, j, len = 0;
    for (i = 1; i < argc; i++)
    for (j = 0; argv[i][j]; j++)
    len++;
    if (argc > 2) len += argc - 2;
    return len;
    }

    int main(int argc, char *argv[]) {
    printf("hossz: %d\n", strLen(argc, argv));
    return 0;
    }
    $ gcc -Wall -O2 test.c
    $ ./a.out hello world
    hossz: 11
    $ ./a.out "hello world"
    hossz: 11
    $ ./a.out hello world
    hossz: 11
    $ ./a.out "hello world"
    hossz: 13

    Jester

Új hozzászólás Aktív témák