今天面试用的 au3 实现的面试题
玩了这么久 au3 也算给别人普及一下。题目是有一个 10W 行数据的文本,要求拆分该文件为 10 个均等的文件快,比如第一个文件存放 1~10000,第二个文件存放 10001~20000,以此类推。
我简单的实现如下步骤。
1、算文件行数
2、load 到内存当作数组处理
3、遍历数组按 10W 行一个文件写到不同的文件里。
第二个题目是字符串替换,一个很长的字符串,把其中的子字符串替换掉。我就写了一句 strreplace。。。
第三个题是在一个文本中查找 email 地址,写了一个正则。 还好没让你写个操作系统{:face (303):}
偷偷的问一句?有没有被潜规则?{:face (356):} 回复 2# haijie1223
哈哈,我先来把你潜了{:face (411):} 回复 3# nmgwddj
你把我当成什么人了,哥只卖身不卖艺{:face (125):} 回复 4# haijie1223
用 C 做了一下第一题,瞬间感觉 au3 各种高大上。。。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int _FileCountLines(const char* strFileName);
int main(int argc, char* argv[])
{
int nCountLine = _FileCountLines("C:/test.txt");
printf("File count lines = %d\n", nCountLine);
FILE* pFile = NULL;
fopen_s(&pFile, "C:/test.txt", "r");
int nSubFileName = 1;
// save new file name "10.txt\n"
char sSubFileName = { 0 };
// save read old file data "100000\n"
char sReadBuffer = { 0 };
for (size_t i = 0; i < nCountLine; i += nCountLine / 10)
{
FILE* pSubFile = NULL;
// new file name append .txt
_itoa_s(nSubFileName, sSubFileName, 10);
strcat_s(sSubFileName, ".txt");
// open new file at current directory
fopen_s(&pSubFile, sSubFileName, "w+");
if (NULL == pSubFile) return -1;
// read old file and write data to new file step nCountLine / 10
for (size_t x = i; x < i + nCountLine / 10; x++)
{
fgets(sReadBuffer, sizeof(sReadBuffer), pFile);
fputs(sReadBuffer, pSubFile);
memset(sReadBuffer, 0, sizeof(sReadBuffer));
}
memset(sSubFileName, 0, sizeof(sSubFileName));
// file name ++
nSubFileName++;
// close new file
fclose(pSubFile);
}
fclose(pFile);
system("pause");
return 0;
}
int _FileCountLines(const char* strFileName)
{
int lines = 0;
int ch;
FILE* pFile = NULL;
fopen_s(&pFile, strFileName, "r");
if (NULL == pFile) return -1;
while ((ch = fgetc(pFile)) != EOF)
{
if (ch == '\n')
{
lines++;
}
}
fclose(pFile);
return lines;
}
很是不得了啊!{:face (239):} au3就是调用api的,底层还是c写的 赞一个,非常强大
页:
[1]