Mütyürke Creative Commons License 2002.09.01 0 0 153
A hiba itt van:

argv[i]=="help"

Stringeket c-ben így nem lehet összehasonlítani. A "help" kifejezés egy h,e,l,p,0 byteokat tartalmazó, csak olvasható bytesorozatot fog létrehozni egy, a process számára csak olvasható memóriaterületen, majd pedig a "help" kifejezésekben ennek a helynek a pointere lesz. Az argv[i]=="help" pedig nem akkor lesz igaz, ha az i. argumentum az, hogy "help", hanem akkor, ha ugyanarra a "help"-re mutat. Tehát soha nem lesz igaz, mivel az argv-k pedig írható memóriaterületen vannak.

Ami neked kell, az egy strcmp. (Az strcasecmp még jobb, az nem különböztet meg kis és nagybetűt). Ehhez kell egy #include is. Használata az if-ben: !strcmp(argv[i],"help"). A '!' nem véletlenül kell oda, sajnos a standard libc függvényei néha egy kicsit viccesek :( Itt pl az strcmp akkor lesz igaz, ha a stringek különböznek.

Egyébként a példa progidban a #include mögé kell még egy is, valamint a main-ból a gcc csak return-nal szereti, ha kilépsz (ez utóbbi warningon kívül más bajt általában nem okoz).

Előzmény: sechu (147)