我读写的文件内容
123456
abcdef
#include<stdio.h>
#include<string.h>
void main()
{
FILE *read;
char buffer[64];
if((read = fopen("read.txt","rb")) == NULL)
{
printf("open file error!");
}
while(!feof(read))
{
fgets(buffer,4,read);
printf("strlen : %d\n",strlen(buffer));
puts(buffer);
}
}
我每次读取的是三个字符。fgets()读取的时候编译器是怎样知道读取三个字符的。列入。我读第一行的时候。读取两次后。第三次把'\r','\n'存放在串中。是不是读一行遇到'\n'之后。不论你要读取的字符数是多少。函数都会停止读字符。而做下面的操作。
可是读取第二行的时候。没有换行呀。第三次它怎么知道刚好三个字符,它是怎样知道最后刚好读三个字节的。结果还有点不正确!!
ããCè¯è¨ä¸fgets()å½æ°è¯´æï¼fgets()ç¨æ¥ä»åæ°stream ææçæ件å è¯»å ¥å符并åå°åæ°s ææçå å空é´ï¼ç´å°åºç°æ¢è¡å符ã读å°æ件尾ææ¯å·²è¯»äºsize-1 个å符为æ¢ï¼ æåä¼å ä¸NULL ä½ä¸ºå符串ç»æã
ããåå char * fgets(char * s, int n,FILE *stream);
ããåæ°ï¼
ããs: å符åæéï¼æååå¨è¯»å ¥æ°æ®çç¼å²åºçå°åã
ããn: ä»æµä¸è¯»å ¥n-1个å符ã
ããstream ï¼ æå读åçæµã
ããè¿åå¼ï¼
1. å½n<=0 æ¶è¿åNULLï¼å³ç©ºæéã
2. å½n=1 æ¶ï¼è¿å空串""ã
3. å¦æè¯»å ¥æåï¼åè¿åç¼å²åºçå°åã
4. å¦æè¯»å ¥é误æéå°æ件ç»å°¾(EOF)ï¼åè¿åNULLã
ãã æ ååºä¸fgets(...)çå®ç°å¦ä¸ï¼
char *fgets(char *s, int n, FILE *stream)ãã