Shammer's Philosophy

My private adversaria

fopen-r+

fopen の r+ の動作を試してみた。サンプルの内容はこんな感じ。

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

int main(void){
    FILE *fp;
    char s[1024];

    if(( fp = fopen("xxxxx.txt", "r+")) == NULL ){
	perror(NULL);
	exit(EXIT_FAILURE);
    }

    while( fgets(s, 1024, fp) != NULL ){
	printf("%s", s);
    }

    fprintf(fp, "%s", "YYYYYYYYYYY\n");

    fclose(fp);

    return 0;
}

xxxxx.txt というファイルの読み書きを行う。実行例は以下。

$ ls
fopen-r+.c
$ gcc fopen-r+.c 
$ ls
a.out		fopen-r+.c
$ 
$ ./a.out 
No such file or directory
$ 
$ echo 1111111111 > xxxxx.txt
$ ls
a.out		fopen-r+.c	xxxxx.txt
$ 
$ ./a.out 
1111111111
$ cat xxxxx.txt 
1111111111
YYYYYYYYYYY
$

ファイルが存在しない場合は、No such file or directory になる。