13 May 2004
gfs_pio_gets 3 Gfarm
gfs_pio_gets 一行読み込み

    #include <gfarm/gfarm.h>

`char *gfs_pio_gets` GFS_File f char * s size_t size

## DESCRIPTION

ファイル gf から、文字列 s に、一行読み込みます。 引数 size に文字配列 s の大きさを指定します。

関数 gfs_pio_getline(3) と異なり、この関数は行末の改行記号を削除 しません。一行の内容を文字配列に納めきれない場合、あるいはファイル 末尾に改行記号が存在しない場合、入力結果の文字配列の末尾に改行記号 がつきません。しかし文字列の終わりを示す '\0' 文字は、どちらの場合 でも付加されます。

EOF は、入力結果の文字配列の長さが 0 文字であることで判断します。

## RETURN VALUES

`NULL`

  正常終了を示します。

`GFARM_ERR_NO_MEMORY`

  メモリ不足のため処理を中止しました。

その他

  上記以外のエラーが生じたことを示します。

## EXAMPLES

`gfs_pio_gets` 関数の使用例

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

    int
    main(int argc, char **argv)
    {
    	char *e;
    	GFS_File gf;
    	char buffer[512];

    	e = gfarm_initialize(&argc, &argv);
    	if (e != NULL) {
    		fprintf(stderr, "gfarm_initialize: %s\n", e);
    		return (EXIT_FAILURE);
    	}
    	if (argc <= 1) {
    		fprintf(stderr, "missing gfarm filename\n");
    		return (EXIT_FAILURE);
    	}
    	e = gfs_pio_open(argv[1], GFARM_FILE_RDONLY, &gf);
    	if (e != NULL) {
    		fprintf(stderr, "%s: %s\n", argv[1], e);
    		return (EXIT_FAILURE);
    	}
    	e = gfs_pio_set_view_global(gf, 0);
    	if (e != NULL) {
    		fprintf(stderr, "%s: gfs_pio_set_view_global: %s\n",
    		    argv[1], e);
    		return (EXIT_FAILURE);
    	}

    	while ((e = gfs_pio_gets(gf, buffer, sizeof buffer)) != NULL &&
    	    *buffer != '\0') {
    		printf("got: %s", buffer);
    	}
    	if (e != NULL) {
    		fprintf(stderr, "ERROR: %s\n", e);
    		return (EXIT_FAILURE);
    	}
    	e = gfs_pio_close(gf);
    	if (e != NULL) {
    		fprintf(stderr, "gfs_pio_close: %s\n", e);
    		return (EXIT_FAILURE);
    	}
    	e = gfarm_terminate();
    	if (e != NULL) {
    		fprintf(stderr, "gfarm_initialize: %s\n", e);
    		return (EXIT_FAILURE);
    	}
    	return (EXIT_SUCCESS);
    }

## SEE ALSO

gfs_pio_open 3, gfs_pio_getline 3, gfs_pio_readline 3, gfs_pio_readdelim 3