On Tue, 31 Jul 2007 18:00:03 +0400, Андрій Мішковський wrote: > Hi, Mateus. > Maybe it looks rude, but i want to correct you: fread, feof, fopen are > _not_ system calls, as i remember. Your example is correct, but it makes > no use of system calls. Your code is pure ISO C. :) > Considering this, the program should look like this: > > #include <unistd.h> /*read(), close()*/ #include <fcntl.h> /*open()*/ > #include <stdio.h> /*fprintf()*/ > #include <sys/types.h> /**/ > #include <errno.h> /* errno*/ > #include <string.h> /* strerror(), memset()*/ > > int > main(int argc, char **argv) > { > int fd; /*file descriptor*/ > char buf[BUFSIZ]; /*buffer for reading data*/ int bytes_read = -1; > /*bytes, already read from file*/ > > if (argc != 2) > { > fprintf(stderr, "Usage: %s <file>\n", argv[0]); return 1; > } > > fd = open (argv[1], O_RDONLY); > if (fd == -1) > { > fprintf(stderr, "%s: open() failed. Reason: %s", argv[0], > strerror(errno)); return 1; > } > > while (bytes_read != 0) > { > bytes_read = read(fd, buf, BUFSIZ); > if (bytes_read == -1) > { > fprintf(stderr, "%s: read() failed. Reason: %s", argv[0], > strerror(errno)); close(fd); > return 1; > } > fprintf(stdout, "%s", buf); > memset(buf, 0, BUFSIZ); > } > > close(fd); > > return 0; > } > > 2007/7/31, Mateus Interciso <p.zarnick@xxxxxxxxx>: >> On Tue, 31 Jul 2007 04:27:13 -0700, nisa wrote: >> >> > hi, >> > i am quite new to programming using system calls and would like a >> > basic idea regarding the usage of system calls. i would like >> > assistance in the following area of c programming in linux: 1.how to >> > open a text file ,read data and print the data on console using >> > system calls >> > 2.create a text file and write some data 3.read data from a file and >> > append that data to another file using lseek() 4.creation of a parent >> > and child process using fork() >> >> Well, just to not let you in blank, here is a VERY simple file that >> reads a text file, and output it to the screen >> >> #include <stdio.h> //standard IO >> #include <stdlib.h> //for reading files #include <string.h> //for >> memset >> #include <errno.h> //for errno >> int main(int argc, char *argv[]){ >> FILE *fp = NULL; >> char ch[1]; >> >> if(argc!=2){ >> fprintf(stderr,"Usage:%s <file>\n",argv[0]); return 1; >> } >> memset(ch,'\0',sizeof(char)*1); >> if((fp=fopen(argv[1],"r"))==NULL){ >> perror("fopen"); >> return errno; >> } >> while(feof(fp)==0){ >> if( (fread(ch,sizeof(char),1,fp)==0) && (feof(fp)==0) ){ >> perror("fread"); >> fclose(fp); >> memset(ch,'\0',sizeof(char)*1); >> return errno; >> } >> fprintf(stdout,"%c",ch[0]); >> } >> fclose(fp); >> memset(ch,'\0',sizeof(char)*1); >> return 0; >> } >> >> Also, as it was stated before, use the man pages. If you don't have a >> Linux box, then google will be your friend for this. In this example, >> you would need, the man pages for fopen(),fread() and feof(). >> >> Good luck. >> >> - >> To unsubscribe from this list: send the line "unsubscribe >> linux-c-programming" in the body of a message to >> majordomo@xxxxxxxxxxxxxxx More majordomo info at >> http://vger.kernel.org/majordomo-info.html >> You are absolutly right, I'm terrible sorry...It's just that it has been so long since I haven't used open(), read(), close(), that I must have gone crazy, I'm terribly sorry for this. Mateus - To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html