Start 5.
This commit is contained in:
parent
89e1c349ef
commit
2f3eed8ac5
6
5/io/fmemopen.c
Normal file
6
5/io/fmemopen.c
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
// TODO
|
||||||
|
return 0;
|
||||||
|
}
|
45
5/io/fopen.c
Normal file
45
5/io/fopen.c
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#include <fcntl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#define RWRR S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
|
||||||
|
int fd = open("test/filefp", O_RDWR | O_CREAT | O_TRUNC, RWRR);
|
||||||
|
|
||||||
|
if(fd == -1) {
|
||||||
|
printf("open file error filefp\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
FILE *fp = fdopen(fd, "w+");
|
||||||
|
char buf[1024];
|
||||||
|
|
||||||
|
if(setvbuf(fp, buf, _IOFBF, 1024)) {
|
||||||
|
printf("setvbuf error\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ferror(fp)) {
|
||||||
|
printf("io stream error\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(feof(fp)) {
|
||||||
|
printf("arrive the end of the file\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
putc('H', fp);
|
||||||
|
fputc('Y', fp);
|
||||||
|
|
||||||
|
fputs(" Hello World!", fp);
|
||||||
|
|
||||||
|
fflush(fp);
|
||||||
|
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
close(fd);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
40
5/io/fread.c
Normal file
40
5/io/fread.c
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
FILE *fp = fopen("./test/filefp", "r+");
|
||||||
|
|
||||||
|
char buf[1024];
|
||||||
|
|
||||||
|
char *pbuf = fgets(buf, 1024, fp);
|
||||||
|
|
||||||
|
printf("buf: %s\n", buf);
|
||||||
|
|
||||||
|
fseek(fp, 0, SEEK_END);
|
||||||
|
|
||||||
|
fprintf(fp, "num: %d", 123456);
|
||||||
|
|
||||||
|
fpos_t off;
|
||||||
|
|
||||||
|
fgetpos(fp, &off);
|
||||||
|
|
||||||
|
printf("off: %lu\n", off);
|
||||||
|
|
||||||
|
int fd = fileno(fp);
|
||||||
|
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
|
if(fstat(fd, &st) < 0) {
|
||||||
|
printf("stat error fd\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("dev: %ld\n", st.st_dev);
|
||||||
|
|
||||||
|
fclose(fp);
|
||||||
|
close(fd);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
1
5/io/test/filefp
Normal file
1
5/io/test/filefp
Normal file
@ -0,0 +1 @@
|
|||||||
|
HY Hello World!num: 123456num: 123456num: 123456
|
34
5/io/tmpfile.c
Normal file
34
5/io/tmpfile.c
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
char buf[L_tmpnam];
|
||||||
|
|
||||||
|
char *pbuf = tmpnam(buf);
|
||||||
|
|
||||||
|
printf("tmpnam: %s\n", pbuf);
|
||||||
|
|
||||||
|
FILE *fp = tmpfile();
|
||||||
|
|
||||||
|
if(fp == NULL) {
|
||||||
|
printf("create tmp file error\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
fputs("Hellow World!", fp);
|
||||||
|
rewind(fp);
|
||||||
|
|
||||||
|
char buf2[1024];
|
||||||
|
|
||||||
|
if(fgets(buf2, sizeof(buf2), fp) == NULL){
|
||||||
|
printf("fgets error\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
fputs(buf2, stdout);
|
||||||
|
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user