- Huawei Watch GT Runner 2 – óra a futóra?
- Ez most a legjobb robotporszívó. Kérdőjel? De nem olcsó. Pont.
- Áprilisban érkezhet a OnePlus Ace 6 Ultra, közben új tabletek is készülnek
- Oppo Pad Mini néven készülhet a gyártó új, kompakt, prémium táblagépe
- Új Xiaomi Mijia etető érkezik 5 MP-es kamerával és éjjellátással
- iPhone topik
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Huawei Watch GT Runner 2 – óra a futóra?
- Fotók, videók mobillal
- Áprilisban érkezhet a OnePlus Ace 6 Ultra, közben új tabletek is készülnek
- Jövő hónapban debütál az Oppo Find X9 Ultra
- Xiaomi 17 - még mindig tart
- Google Pixel topik
- Magisk
- Íme az új Android Auto!
Ú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
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- 27% - LG UltraGear 27GS75Q-B Monitor! 2560x1440 / 200Hz / 1ms / G-Sync / G-Sync / FreeSync
- HONOR 400 Lite Velvet Grey 256GB használt karcmentes garancia 2027.07.31.-ig
- LG 24ML600SP Monitor Full HD LED IPS / 1920x1080 / 1ms / FreeSync / 75Hz !
- Nothing Phone (1) / 8/256GB / Kártyafüggetlen / 12Hó Garancia /
- Microsoft Surface Laptop 5 i5-1245U 16 GB RAM 2256X1504 érintőkijelző Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


