*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bc-cn.net
*/ 作者: wangjian2006 QQ:464663391
*/ 时间: 2007-7-9 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------
先看一段小代码
#include<stdio.h>
#include<string.h>
void main()
{
FILE *in = NULL;
char *p = NULL;
char xx[3][3] = {0, };
int i = 0;
//打开in.dat文件,该文件中有两行数据,第一行为11,第二行为22
in = fopen("in.dat","r");
//第一次调用fgets函数
p = fgets(xx[0],3,in);
printf("\nxx[0] = %s",xx[0]);
//第二次调用fgets函数
p = fgets(xx[0],3,in);
printf("\nxx[0] = %s",xx[0]);
*p = NULL;
fclose(in);
};
可能大家都知道输出结果理所当然是:
11
22
我的疑问是在执行fgets(xx[0],3,in)前后,指针in不变,返回的指针p也不会变(都是指向&xx[0][0]);
那么程序凭借什么在第二次执行fgets时去从第二行开始获取??
不知道我表达的意思大家明白不?或许程序自己定义了一个指针来指向执行后的开始地址?
[此贴子已经被作者于2007-7-9 23:20:03编辑过]