nmgwddj 发表于 2016-1-14 16:07:43

今天面试用的 au3 实现的面试题

玩了这么久 au3 也算给别人普及一下。
题目是有一个 10W 行数据的文本,要求拆分该文件为 10 个均等的文件快,比如第一个文件存放 1~10000,第二个文件存放 10001~20000,以此类推。
我简单的实现如下步骤。

1、算文件行数
2、load 到内存当作数组处理
3、遍历数组按 10W 行一个文件写到不同的文件里。

第二个题目是字符串替换,一个很长的字符串,把其中的子字符串替换掉。我就写了一句 strreplace。。。

第三个题是在一个文本中查找 email 地址,写了一个正则。

haijie1223 发表于 2016-1-14 16:43:58

还好没让你写个操作系统{:face (303):}
偷偷的问一句?有没有被潜规则?{:face (356):}

nmgwddj 发表于 2016-1-14 17:37:00

回复 2# haijie1223


    哈哈,我先来把你潜了{:face (411):}

haijie1223 发表于 2016-1-15 07:32:08

回复 3# nmgwddj


    你把我当成什么人了,哥只卖身不卖艺{:face (125):}

nmgwddj 发表于 2016-1-15 22:51:53

回复 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;
}

heroxianf 发表于 2016-1-21 15:23:38

很是不得了啊!{:face (239):}

378906376 发表于 2016-1-21 23:39:50

au3就是调用api的,底层还是c写的

summerhorn 发表于 2016-1-25 15:59:05

赞一个,非常强大
页: [1]
查看完整版本: 今天面试用的 au3 实现的面试题