Citat:
Mikky je napisao:
za ovo prvo
jel bi onda moglo ovako
int main(int argc, char argv[][])
{
char aaa[] = argv[1];
.......
evo tu je argv dupli niz :)
ako ne moze i ovako onda kako da smestim argument u char niz ali bez tih funkcija ako je moguce ?
mozda da stavim argv*[] i *string
pa onda string = argv[1] ??
Styo se tice definisanja argv sve je jedno kako ces da stavis jel argv pokazuje na niz pointera prema tome ispravno bi bilo napraviti pointer char i njemu dodeliti adresu od argv[x]
znaci
Code:
char *tmp = argv[1];
moras da pravis razliku izmedju ovoga ->
Code:
char *buf="predator";
char buf1[]="predator";
buf -----> [predator]
buf1 [predator]
Znaci buf pokazuje na taj string u data segmentu a u buf1 je smesten taj string
Citat:
a za ovo drugo
ok pazi ono sto ja hocu je da mi gresku pise u fajl a ne na stderror tj ekran
ovo sam hteo da resim ovako
fprintf( phile, funkcija() )
e sad ova funkcija treba nesto da sljaka i ako je sve ok ona ce da vrati neki string koji ce da upise u stream "phile" ali ako dodje do greske hocu da mi onda vrati tu gresku u text obliku koja ce da se loguje u taj fajl
e sad takodje ja necu da mi kad dodje do greske bude exit(1) i da mi se prekine izvrsavanje celog programa vec samo da mi izadje iz te funkcije
sto se radi sa return a program da nastavi dalje da radi
sad ono valjda si razumeo :)
Mozes da koristis freopen() . Naime ta funkcija sluzi da se vec postojeci stream zatvori i otvori na drugi.
Primer :
Code:
#include<stdio.h>
int main(){
FILE * str;
FILE * stream=freopen("/tmp/gg","w",stderr);
str=fopen("/tmp/aaaaaaaaaaa","r");
perror("");
}
U ovom slucaju je /tmp/aaaaaaaaa neki nepostojeci file i perror() treba da stampa gresku u stderr ali kako smo zatvorili stderr i preusmerili ga na /tmp/gg tada ce greska da te ceka u /tmp/gg
Citat:
btw da li je moguce da mi return vrati nesto tipa
funkcija()
{
.......
return "Error " neki_string[] " lol"
}
znaci da vrati npr. "Error user is too stupid for this program lol"
znaci vise parametara, nemora bas ova kombinacija
literal string, string, literal string vec moze i bilo sta umesto neki_string[]
npr int ili long
Nemoze tako da vrati ;o)
Moze da vrati adresu od stringa ->
Code:
char *gg(){
return "predator";
}
int main(){
char *pr=gg();
printf("%s\n",pr);
}
Mozes da koristis recimo staticki buffer pa da u njega potrpas sve zivo sa sprintf() i onda nema potrebe da vrces sa return.
[
Ovu poruku je menjao predator dana 06-15-2001 u 09:41 AM GMT]