rewind是用来重置fp的位置的,因为你执行了写入操作,位置指针就移到写入的字符串之后了,执行rewind后,这个位置恢复到文件头,即0的位置。
rewind将fp重置为指向文件的起始位置的,从标准输入中按行读取,然后写到文件waddy中,写到最后面(a+表示追加append,并且可读可写),当输入一个空行即直接按enter后gets读入数据长度为0,所以words[0]就等于0,追加结束。
调用rewind(fp),将fp重置到waddy的开始处,从waddy文件的开始处开始读,fscanf返回每次成功读取的项数,这里面只有一项%s字符串,所以成功读取的时候返回1,只要读取成功就输出到标准输出,直到文件末尾返回EOF(-1)或遇到错误退出while循环,然后关闭文件。