|
>ファイルの行数で処理を分けたいと思います。
>ファイルが100行以上なら処理をして、100行未満なら何もしないです
>While (fgets(buff, 256, ifp) == NULL)
>で1行読み込みを行い、nで行数を調べ、 nが100行以上なら処理を
>するのですが、1度fgets(buff, 256, ifp)でファイルを読み込んだ後、
>fgets(fd,256,ifp);では最初からファイルを読まないようで
>処理が出来ません。どう書けばよいのでしょう
fgets()がファイルの終わりを検出するのはNULLを返してきた場合ですか
ら、==ではなく!=で比較する必要があります。
次にfgets()を実行する時は必ずファイルの終端までファイルポインタが
移動していますから、読み込んでも何も得られません。ですから、fgets()
をする前にrewind()もしくはfseek(ifp, 0, SEEK_SET)でファイルポインタ
をファイル先頭に移動してから再度読み込む必要があります。
#include <stdio.h>
#include <string.h>
#define N 100
int main(void)
{
FILE *ifp, *ofp;
char fd[256], buff[256];
char *p_fd[256];
int n = 0;
ifp = fopen("affine.cpp", "r"); /* 例えば */
while (fgets(buff, 256, ifp) != NULL)
n++;
if (n > N - 1) {
rewind(ifp);
fgets(fd, 256, ifp);
p_fd[0] = strtok(fd, ",");
printf("%s\n", p_fd[0]);
}
else;
fclose(ifp);
return 0;
}
|