kompilacja programu- nie widzę błędu w programie C

0

Witam, mam problem z kompilacją programu w C. Nie wiem gdzie jest błąd (mimo iż pokazują mi się linijki, w którym takowy występuje) ... Czy jest ktoś kto mógłby mi pomóc w naprowadzeniu mnie do odnalezienia błędu? Z góry bardzo dziękuję.

Program pokazujący, ze zmienne programu w procesie rodzicielskim i potomnym maja te same wartości początkowe, ale są niezależne:

 
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>

int fatal(char *s) {
  perror(s);
  exit(1);
}

int printpos(const char *string, int filedes, char *buf) {
  off_t pos;
  if((pos = lseek(filedes, 0, SEEK_CUR)) == -1)
    fatal("B£¡D: niepowodzenie lseek");
  printf("%s:%ld:%s\n", string, pos, buf);
}

main() {
  int fd;       // deskryptor pliku
  pid_t pid;    // ID procesu
  char buf[10]; // bufor dla danych pliku
 
  if((fd = open("data", O_RDONLY)) == -1) 
    fatal("B£¡D: otwarcie pliku");
  
  read(fd, buf, 10);

  printpos("PRZED: fork()", fd, buf);

  switch(pid = fork()) {
  case -1: // b³±d
    fatal("B£¡D: niepowodzenie w fork");
    break;
  case 0: 
    printpos("POTOMNY: przed read", fd, buf);
    read(fd, buf, 10); 
    printpos("POTOMNY: po read", fd, buf);
    break;
  default: 
    wait((int *)0); 
    printpos("RODZICIELSKI: po wait", fd, buf);
  }
}
0

Jakie ci pokazuje błędy?

0

Takie:

./zadanie.c: In function ‘fatal’:
./zadanie.c3: warning: incompatible implicit declaration of built-in function ‘exit’ [enabled by default]
./zadanie.c: In function ‘printpos’:
./zadanie.c3: warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by default]

0

To nie są błędy tylko ostrzeżenia wynikające z braku:

#include <stdio.h>
#include <stdlib.h>
0

Dzięki! Skompilowało się, ale przy chęci odtworzenia programu wyskakuje:

./zadanie.c: line 7: błąd składni przy nieoczekiwanym znaczniku (' ./zadanie.c: line 7: int fatal(char *s) {'

:P

1

"błąd składni przy nieoczekiwanym znaczniku ('" - a którego słowa nie rozumiesz?

0

Nie rozumiem po prostu gdzie jest tam błąd :) no ale dzięki za pomoc w pokonaniu pierwszego problemu

1

Klikasz na tekst błędu i środowisko wskazuje ci gdzie wklepałeś ten zbędny znak.

0

Klikam na komunikat i nic ;| chodzi o znak `? Nie ma go w programie:

int fatal(char *s){
  perror(s);
  exit(1);
}
 
1

Otwórz plik w notatniku.

0

I nic mi to nie daje :( Laik ze mnie wielki w tych sprawach...

0

To pokaż całe źródło tego programu i log błędu.

0
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>

int fatal(char *s){
  perror(s);
  exit(1);
}
 
int printpos(const char *string, int filedes, char *buf) {
  off_t pos;
  if((pos = lseek(filedes, 0, SEEK_CUR)) == -1)
    fatal("B£¡D: niepowodzenie lseek");
  printf("%s:%ld:%s\n", string, pos, buf);
}
 
main() {
  int fd;      
  pid_t pid;    
  char buf[10]; 
 
  if((fd = open("data", O_RDONLY)) == -1) 
    fatal("B£¡D: otwarcie pliku");
 
  read(fd, buf, 10);
 
  printpos("PRZED: fork()", fd, buf);
 
  switch(pid = fork()) {
  case -1:
    fatal("B£¡D: niepowodzenie w fork");
    break;
  case 0: 
    printpos("POTOMNY: przed read", fd, buf);
    read(fd, buf, 10); 
    printpos("POTOMNY: po read", fd, buf);
    break;
  default: 
    wait((int *)0); 
    printpos("RODZICIELSKI: po wait", fd, buf);
  }
}
 

A błąd taki (kompiluje się, ale wyświetla się gdy chcę uruchomić program:
./zadanie.c: line 7: błąd składni przy nieoczekiwanym znaczniku (' ./zadanie.c: line 7: int fatal(char *s){'

0

Ooo. To wszystko wyjaśnia :) Dzięki wielkie.

Wcześniej zawsze działało mi gdy nadawano uorawnienia: chmod +c nazwa.c, następnie gcc nazwa.c a później ./nazwa.c

Skoro jesteśmy przy tym to może ktoś mi to wyjaśni dlaczego tak a nie tak :)

0

Następny o_O Niemożliwe żeby ci to działało.

2

Jest tylko jedno wyjaśnienie jak mogło ci to działać: - bardzo dobre zioła.

1 użytkowników online, w tym zalogowanych: 0, gości: 1