Odpowiedz na ten temat
Pokaż wyniki od 1 do 8 z 8

  1. Dołączył
    Sep 2010
    Postów
    2

    Cytuj | #1

    Witam,
    pisze od jakiegoś czasu programy na macu w języku C (ucze się) i natrafiłem na bardzo specyficzny problem z plikiem. program który napisałem ma za zadanie wpisać do pliku jedno zdanie, kod programu:

    Kod php:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
     
     
    int main (int argc, const char argv[])
    {
      
    char tekst[]="tujesttekstktorychchcezapisacdopliku";
              
    char tekst2[20];
     
     
      
    FILE *plik;   /*r=read, w=write, rwx-obydwachyba, wb-tryb binarny*/
              
    if ((plik=fopen("text""w"))==NULL)
              {
      
    printf("plik nie zostal otworzony");
              }
     
              
    fprintf(plik"%s" ,tekst);  /*wpisanie tekstu*/
              
    fscanf(plik"%s",tekst2);
      
    printf("tekst2: %s\n"tekst2);
     
              if (
    fclose(plik)!=0)
              {
      
    printf("blad przy zamykaniu");
              }
     
        
    printf("Hello, World!\n");
        return 
    0;

    Wynik programu to TYLKO "hello world" co oznacza że wszystkie instrukcje sie wykonały, program nie zgłasza błędu otwarcia pliku (sprawdzałem tez błąd zamknięcia - brak) a jednak plik jest nadal czysty.
    Dla wyjaśnienia kod sprawdzałem pod windowsem i działa poprawnie (wpisuje linijkę do pliku).
    Probowalem również inne tryby otwarcia pliku (łacznie z binarnymi - chociaż nie powinno to mieć różnicy) - bez skutku.
    Macie może jakieś sugestie?
    Ostatnio edytowane przez wojtkow ; 05.07.2011 o 08:40


  2. Avatar macieks72

    Dołączył
    Aug 2009
    Postów
    9,327

    Cytuj | #2

    W programie wszystko jest dobrze, u mnie zadziałało czyli założyło plik "text" a w nim "tujesttekstktorychchcezapisacdopliku". Może szukasz go w złym miejscu.
    Komputer: Macbook Pro wykąpany w pepsi, teraz Acer Aspire 5750G
    Telefon: iPhone 4 - iOS 5.1.1
    Ludzie, używajcie alta. No chyba że wam obojętne, czy robicie komuś 'łaskę', czy 'laske'.


  3. Dołączył
    Jan 2009
    Postów
    17

    Cytuj | #3

    Kod php:
    #include <stdio.h>
     
    int  main ()
    {
        
    char tekst[]="cosDoWpisania";
        
    char tekst2[80]="";
         
        
    FILE *plik;   /*r=read, w=write, rwx-obydwachyba, wb-tryb binarny*/

        
    if ((plik=fopen("text""rw"))==NULL)
           
    printf("plik nie zostal otworzony");

        
    fprintf(plik"%s" ,tekst);  /*wpisanie tekstu*/
        
    printf("tekst2: %s \n"tekst2); // sprawdzamy stringa przed oczytem
        
    fscanf(plik"%s"tekst2);
        
    printf("tekst2: %s \n"tekst2); // sprawdzamy stringa po odczycie

        
    if (fclose(plik)!=0)
           
    printf("blad przy zamykaniu");

        return 
    0;
    // end main 
    Zobacz czy ten kod zadziała, bo po pierwsze otwierałeś plik w trybie tylko do zapisu ("w") a powinno być odczyt i zapis ("rw"), poza tym tablica tekst2 była za mała dla twojego stringa.
    Komputer: DELL Inspiron 1501/iMac
    Telefon: iPhone 3G


  4. Dołączył
    Sep 2010
    Postów
    2

    Cytuj | #4

    Cytat Napisał macieks72 Zobacz post
    W programie wszystko jest dobrze, u mnie zadziałało czyli założyło plik "text" a w nim "tujesttekstktorychchcezapisacdopliku". Może szukasz go w złym miejscu.

    tak, to było aż takie proste.
    Tworze pliki bezpośrednio w xcode, zapisuje do katalogu głównego mojego projektu a one i tak modyfikowane i zapisywane są gdzie indziej.
    Wie ktoś jak zmienić lokalizacje zapisywanych plików?


  5. Dołączył
    Jan 2009
    Postów
    17

    Cytuj | #5

    Entwu możesz spróbować kompilować i uruchamiać w konsoli "g++ program.c" a potem uruchamiasz "./a.out" i wszystko się dzieje w katalogu w którym kompilujesz, tylko miej świadomość, że nie piszesz w ANSI C tylko w C++
    Ostatnio edytowane przez bartek1983 ; 06.07.2011 o 12:42
    Komputer: DELL Inspiron 1501/iMac
    Telefon: iPhone 3G


  6. Dołączył
    Jul 2011
    Postów
    26

    Cytuj | #6

    Przepraszam, ale w ktorym miejscu w jego kodzie jest cos niezgodne z ANSI C?

  7. Avatar darvark
    Dołączył
    Apr 2007
    Skąd
    Kielce
    Postów
    125

    Cytuj | #7

    Czepiając się to nie do końca zgodne ze standardem jest
    int main ()
    . Ale taki zapis też jest poprawny. A i bartek1983. Poczytaj jakie są różnice między C a C++. Kod który zaprezentował kolega jest kodem w czystym C, nawet po dyrektywie include to widac.
    Komputer: macbook 13'' - MA699ZH/A
    Telefon: IPHONE 3G 8GB


  8. Dołączył
    Jan 2009
    Postów
    17

    Cytuj | #8

    Widzę, że nieprecyzyjnie się wyraziłem, chodziło mi o kompilację g++ żeby miał świadomość tego, że to kompilator c++
    Komputer: DELL Inspiron 1501/iMac
    Telefon: iPhone 3G

Odpowiedz na ten temat