2 din 3
2
Sfaturi programare
  [ Ignoră ]   [ # 16 ]
Avatar
RankRank
Jr. Member
Din: Campina
Macuser din: 17.02.10

Revin cu ceva nelamuriri legate de xCode, daca ma poate ajuta cineva as fi recunoscatoare. Incerc sa folosesc fisiere. O sa pun sursa de la un program simplu care citeste o variabila dintr-u fisier rtf.

#include

int main (int argc, const char * argv[])
{
  FILE *f;
  int i;
  f=fopen(“in.rtf”, “r”);
  i=fscanf(f,”%i”,&i);
  printf(”%i”,i);
 
 
  return 0;
}

La rulare apar urmatoarele:

Loading program into debugger…
Program loaded.
run
[Switching to process 315]
Running…
Program received signal:  “EXC_BAD_ACCESS”.
sharedlibrary apply-load-rules all
(gdb)


Imi poate explica cineva unde gresesc, sau de unde erorile acestea?

 Semnătură 


Macbook White 2.26 GHz, 8GB RAM, 250 HDD
iPhone 4 16GB

Profil
 
  [ Ignoră ]   [ # 17 ]
Avatar
RankRankRankRank
Sr. Member
Din: Cluj-Napoca
Macuser din: 26.01.06

cred ca la fscanf e problema, daca il stergi e ok.
asta merge? http://irc.essex.ac.uk/www.iota-six.co.uk/c/i4_fwrite_fscanf_fprintf.asp

oricum problema ta nu are legatura cu xcode, exercitii dintrastea mici poti sa le scrii in orice editor de text si apoi le compilezi in terminal

 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 18 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

abia m-am apucat si eu de objective c dar nici eu nu inteleg de ce te complici.
scrie cu vi in terminal sau cu orice editor codul tau la la inceput #include stdio.h
si vezi ca i-ul ala nu este initializat,doar l-ai declarat si are o valoare de….el stie cat smile
variabilele externe din ce stiu sunt initializate automat cu 0 dar cele din auto nu.
P.S. nu apare stdio.h daca pun semnele

< si >

probabil si la tine la fel cand ai scris aici si a ramas doar #include

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 19 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

tocmai am probat eu codul tau in xcode si merge ok.

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 20 ]
Avatar
RankRank
Jr. Member
Din: Campina
Macuser din: 17.02.10

i-ul nu trebuie initializat pentru ca peste el pun valoarea din fisier, nu ma folosesc de valoarea lui initiala. stdio.h nu este pentru ca am copiat eu prost, in program il am. Si am reusit sa nu imi mai dea eroare doar k nu stiu din ce motiv nu imi afiseaza corect. In fisier eu am numarul 123, si el afiseaza 0. Tu unde ai pus in.rtf ? Langa executabil?

 Semnătură 


Macbook White 2.26 GHz, 8GB RAM, 250 HDD
iPhone 4 16GB

Profil
 
  [ Ignoră ]   [ # 21 ]
Avatar
RankRankRank
Member
Din: Vienna, Austria
Macuser din: 19.10.08

Folosește pe viitor tagurile [ code ], astfel vei putea da paste la program corect.

Ai mai multe probleme in program.

1) NU merge ce vrei tu cu fișier rtf, rtf e formatat. Ai nevoie de fișier text. Nu de asta crapă, dar și dacă nu ar crăpa, tot nu ar merge.

2) NU verifici ce returneaza fopen. mai exact, acum apelul nu reușește pentru că probabil fișierul ăla nu se află în directorul curent al aplicației. Încearcă să folosești pathul absolut sau pune-l unde trebuie. Mai încolo, folosești fscanf() cu un fișier neinițializat, de asta crapă.

3) Folosești fscanf ala să citești din fișier în variabila i, dar de asemenea atribui lui i valoarea returnată de scanf, care dacă va reuși va fi totdeauna 1, (dacă nu va reuși va fi 0) că citești un singur număr. Dacă te interesează ce returnează scanf folosește altă variabilă. În acest caz, nu prea te interesează ce returnează scanf.

[ Modificat: 04 Martie 2010 10:07 PM de Aram ]
 Semnătură 

Membru retras.

Profil
 
  [ Ignoră ]   [ # 22 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06
Andrutzik - 04 Martie 2010 10:01 PM

i-ul nu trebuie initializat pentru ca peste el pun valoarea din fisier, nu ma folosesc de valoarea lui initiala. stdio.h nu este pentru ca am copiat eu prost, in program il am. Si am reusit sa nu imi mai dea eroare doar k nu stiu din ce motiv nu imi afiseaza corect. In fisier eu am numarul 123, si el afiseaza 0. Tu unde ai pus in.rtf ? Langa executabil?

in.rtf l-am pus in home adica /users/userul tau

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 23 ]
Avatar
RankRank
Jr. Member
Din: Campina
Macuser din: 17.02.10

#include

#include

int main (int argc, const char * argv[])
{
  FILE *f;
  int x;
 
  if ((f = fopen(“in.rtf”, “r”)) == NULL) {
      printf(“Error opening file!”);
      exit(1);
  }
 
  fscanf(f,”%i”,&x);
  printf(”\nNr este :”);
  printf(”%i”,x);
  fclose(f);
 
 
  return 0;
}

Asta este ultima varianta a programului. Ce ar trebui sa folosesc daca nu rtf? :(

 Semnătură 


Macbook White 2.26 GHz, 8GB RAM, 250 HDD
iPhone 4 16GB

Profil
 
  [ Ignoră ]   [ # 24 ]
Avatar
RankRankRank
Member
Din: Vienna, Austria
Macuser din: 19.10.08

Txt. Trebuie să meargă ce ai scris tu acolo, dar totuși folosește

...code... 

pe viitor.

 Semnătură 

Membru retras.

Profil
 
  [ Ignoră ]   [ # 25 ]
Avatar
RankRank
Jr. Member
Din: Campina
Macuser din: 17.02.10
Aram - 04 Martie 2010 10:08 PM

Txt. Trebuie să meargă ce ai scris tu acolo, dar totuși folosește

...code... 

pe viitor.

Unde naiba e txt in mac k eu nu gasesc?

 Semnătură 


Macbook White 2.26 GHz, 8GB RAM, 250 HDD
iPhone 4 16GB

Profil
 
  [ Ignoră ]   [ # 26 ]
Avatar
RankRankRank
Member
Din: Vienna, Austria
Macuser din: 19.10.08

Ce editor folosești să scrii fișierul ăla? Dacă folosești TextEdit atunci trebuie să dai Format->Make Plain Text întâi.

 Semnătură 

Membru retras.

Profil
 
  [ Ignoră ]   [ # 27 ]
Avatar
RankRank
Jr. Member
Din: Campina
Macuser din: 17.02.10
Aram - 04 Martie 2010 10:13 PM

Ce editor folosești să scrii fișierul ăla? Dacă folosești TextEdit atunci trebuie să dai Format->Make Plain Text întâi.

Am reusit. Aceasta era problema. Nu am stiut ca nu deschide rtf. Am folosit word ca sa salvez de tip .txt si a mers perfect. Multumesc mult. O seara buna tuturor !

 Semnătură 


Macbook White 2.26 GHz, 8GB RAM, 250 HDD
iPhone 4 16GB

Profil
 
  [ Ignoră ]   [ # 28 ]
Avatar
RankRank
Jr. Member
Din: Campina
Macuser din: 17.02.10

Mai revin si eu cu o nelamurire. De ce daca rulez programul din xCode merge perfect si daca rulez executabilul zice k nu poate deschide fisierul?

 Semnătură 


Macbook White 2.26 GHz, 8GB RAM, 250 HDD
iPhone 4 16GB

Profil
 
  [ Ignoră ]   [ # 29 ]
Avatar
RankRankRank
Member
Din: Vienna, Austria
Macuser din: 19.10.08

Pentru că directorul curent este diferit, și tu încerci să deschizi fișierul din directorul curent al procesului respectiv.

 Semnătură 

Membru retras.

Profil
 
  [ Ignoră ]   [ # 30 ]
Avatar
RankRank
Jr. Member
Din: Campina
Macuser din: 17.02.10
Aram - 04 Martie 2010 10:42 PM

Pentru că directorul curent este diferit, și tu încerci să deschizi fișierul din directorul curent al procesului respectiv.

Nu inteleg… si ce trebuie sa fac?

 Semnătură 


Macbook White 2.26 GHz, 8GB RAM, 250 HDD
iPhone 4 16GB

Profil
 
   
2 din 3
2