对文件的所有操作,其文件位置指针都会指向操作结束的位置,读取一行后指针已指向下一行,所以不必担心如何换行,继续读就是了。
至于分割字符串,可以用strtok(string, delimiter),string为待分割字符串的起始地址,delimiter为分割符。该语句逐个字符的进行对比,找到分割符或空格就把它换成NUL,结束,或遇NUL结束,位置指针指向分割符或空格后的字符,下一次分割应从这里开始。该语句返回指向分割成的字符串的指针。要完成所有分割,须用循环语句。例:
char string[]={"a,b,c,d"} *p;
p = strtok (string, ","); //语句结束后string值要改变
while (P != NULL)
{
strtok (NULL ,","); //从上一次分割的分割符后一字符开始继续
} 还漏了一个东东,可以用feof(fp)来检测文件是否结束,等于1时表示文件结束,0表示没有结束,所以经常用
while (feof (fp) == 0)
{} 多谢多谢,又学了几招!!! 好东西,谢谢分享! 很常用,但是很多细节还是需要好好学习。谢谢 char* readline(FILE* f)
{
char* line = (char*) calloc(0, sizeof(char) );
char c;
int len = 0;
while ( (c = fgetc(f) ) != EOF && c != '\n')
{
FilePosition = NOTEND;
line = (char*) realloc(line, sizeof(char) * (len + 2) );
line = c;
line = '\0';
}
return line;
} char *ReadLineFromFile(char *fileName,long line)
{
int i;
int fileHandle;
int onelineWidth;
int postion;
char oneLineData;
char *Ptr;
fileHandle = OpenFile (fileName, VAL_READ_ONLY, VAL_OPEN_AS_IS, VAL_ASCII);
for (i=1;i<=line;i++)
{
postion = SetFilePtr(fileHandle,0,1);
onelineWidth = ReadLine(fileHandle,oneLineData,20);
Delay(0.01);
}
Ptr = oneLineData;
return Ptr;
}
这样返回的就是第N行的数据存储的指针,只是这个需要知道文本中一共有多少行. 感谢高手的回复,让小弟收益啊! 谢谢!! 同求中呀!学习了 学习了!
页:
1
[2]