“七夕” 闲来无事,为了进一步掌握理解字符串数组,做了一件比较无聊的事情,把一个文本文件以行为单位传导到一个数组里,然后再把这个数组输出<欢迎各种批判&g
程序代码:
#include <stdio.h> #include <windows.h> int main() { HANDLE hFile = CreateFile(TEXT("d:\\test.txt"),GENERIC_READ,0,NULL,OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL,NULL); if (hFile == INVALID_HANDLE_VALUE) { OutputDebugString(TEXT("CreateFile fail!\r\n")); } char *p[10000]; //分配文本文件的行数,暂定最多接收10000行 for(int i=0;i<10000;i++) { p[i]= (char*)malloc(256); //每行最多接收256个字符 memset(p[i],0,256); } DWORD filesize=GetFileSize(hFile,NULL); char* buffer=new char[filesize+1]; memset(buffer,0,filesize+1); DWORD readsize; ReadFile(hFile,buffer,filesize,&readsize,NULL); int k,j=0,n=0; for(k=0;k<(int)filesize;k++) { if(buffer[k]!='\n') //按行扫描 { *(p[j]+n)=buffer[k]; //效率啊 每次仅copy一个字符 n++; // n 是干啥的 n是移动个体字符串索引(相当于指针) } else { j++; //j 代表的行数 n=0; } } //输出字符串指针数组 int m=0; while(m<10000) { if(*p[m]=='\0') break; printf("%s\n",p[m]); m++; } delete buffer; return 0; }