一、 一个文本文件有多行,每行为一个URL。请编写代码,统计出URL中的文件名及出现次数。
a) 文件名不包括域名、路径和URL参数,例如http://www.rs.com/n.op/q/rs?id=1中的文件名是rs。
b) 部分URL可能没有文件名,例如http://www.abc.com/,这类统计为“空文件名”。
c) 出现在不同URL中的相同文件名视为同一文件名,例如http://www.ceshi.com/hi.php和ftp://ftp.cdef.com/hi.php为同一文件名
文件内容示例如下:
http://www.test.com/abc/de/fg.php?id=1&url=http://www.test.com/index.html
http://www.ceshi.com/hi.jsp
ftp://ftp.ceshi.com/hi.jsp
http://www.hello.com/cw/hi.jsp?k=8
http://www.hi.com/jk/l.html?id=1&s=a.html
http://www.rs.com/n.op/q/rs?id=1
http://www.abc.com/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void UrlFileName(char* fileName, char* p[], int nLen);
void GetUrlFileName(const char* fileName);
char* StringTrim(char* pFile);
char* GetFileName(const char* pstrUrl,int nStrLen);
void UrlFileName(char* fileName, char* p[], int nLen)
{
int nCount = 0;
for(int i = 0 ;i < nLen;++i)
{
if(!strcmp(p[i], fileName))
{
++nCount;
}
}
printf("文件名%s出现的次数为%d\n", fileName, nCount);
free(p[i]);
}
void GetUrlFileName(const char* fileName)
{
FILE* fRead = fopen(fileName, "r");
FILE* fWrite = fopen("d:\\write.txt", "w");
char szFile[1000] = {0};
char* p[100] = {NULL};
char* p1[100] = {NULL};
int index = 0;
int nflag = 0;
int index1 = 0;
while(1)
{
memset(szFile, 0, 1000);
fgets(szFile, 1000, fRead);
strcpy(szFile, StringTrim(szFile));
int nStr = strlen(szFile);
if(nStr == 1 || nStr == 0) continue;
fputs(szFile, fWrite);
p[index] = GetFileName(szFile, nStr);
for(int i = 0;i < index1;++i)
{
if(!strcmp(p1[i], p[index]))
{
++nflag;
break;
}
}
if(nflag == 0)
{
p1[index1] = p[index];
++index1;
}else
{
nflag = 0;
}
++index;
if(feof(fRead)) break;
}
for(int i = 0;i < index1;++i)
{
UrlFileName(p1[i], p, index);
}
fclose(fRead);
fclose(fWrite);
}
/*
去除前后空格
abcdefg
*/
char* StringTrim(char* pFile)
{
char* pStr = pFile;
while(*pFile != 0)
{
if(*pFile != ' ')
{
break;
}else
{
++pStr;
}
++pFile;
}
int i = strlen(pFile) - 1;
do
{
if(*(pFile+i) != ' ')
{
break;
}else
{
*(pStr+i) = '\0';
}
--i;
} while (i >= 0);
return pStr;
}
/*
截取最后一个反斜的杠的位置和"?"号的位置
*/
char* GetFileName(const char* pstrUrl,int nStrLen)
{
char* pUrlName = (char*)malloc(20);
memset(pUrlName, 0, 20);
int i = 0;
int nCount1 = 0;
int nCount2 = 0;
do
{
if('/' == *(pstrUrl+i))
{
if(nCount1 != 0)
{
nCount1 = 0;
}
nCount1 += i;
}
if('?' == *(pstrUrl+i))
{
nCount2 += i;
break;
}
++i;
}while(i < nStrLen);
if(!nCount2)
{
nCount2 = i-1;
}
i = nCount1 + 1;
int urlIndex = 0;
if(i == nCount2)
{
pUrlName = "空文件";
}else
{
for(;i < nCount2;++i)
{
*(pUrlName+urlIndex) = *(pstrUrl+i);
++urlIndex;
}
}
return pUrlName;
}
分享到:
相关推荐
【百度面试题大全】涵盖了多个IT领域的知识点,包括数据结构、算法、数据库理论以及市场营销策略。以下是这些知识点的详细说明: 1. **堆和栈的区别**:堆和栈是计算机内存管理的两种基本数据结构。栈是后进先出...
"百度面试题总结"这个资料包很可能包含了百度在招聘过程中对C++程序员的考察点,帮助应聘者更好地准备面试。 C++的基础知识点包括: 1. **基本语法**:C++的基础始于了解变量、数据类型、运算符、流程控制(如if...
java 百度面试题
### 百度面试题解析 #### 一、捣乱分子对问题 **题目描述:** 在给定的一个整型序列中,如果前面的人比后面的人高(两人身高相同被认为是合适的),那么这一对人就被视为“捣乱分子”。例如,对于序列`176, 178, ...
【C++百度面试题】涉及的知识点主要包括C++语言特性、操作系统原理以及算法设计。 1. **数据库死锁原理及避免策略**: - 死锁是由于资源竞争导致的两个或更多进程无法继续执行的现象。产生死锁的必要条件包括互斥...
### 百度面试题汇总(Java) #### 一、Java基础知识 1. **自我介绍**:面试官希望从自我介绍中获取应聘者的基本背景信息,包括但不限于教育经历、工作经验等,以便于后续针对这些背景提出具体问题。 2. **项目...
### 百度面试题解析:求最短操作路径 #### 题目背景 题目来源于一份整理的百度面试题集,该题集被认为是一个很好的资源,对于正在寻找工作的求职者来说具有较高的参考价值。 #### 题目描述 题目要求实现一个函数,...
《百度面试题第三题及答案解析》 面试是求职过程中至关重要的一环,尤其对于IT行业的面试,往往涉及到具体的技术问题和解决方案。本题主要关注的是数据库设计与优化,以及系统设计策略,这些问题在实际工作中具有很...
标题与描述均提到了“2011百度面试题总结”,这意味着内容主要聚焦于2011年百度在招聘过程中使用的面试题目,尤其是针对数据挖掘研发工程师实习生的岗位。这样的总结对于准备进入IT行业,尤其是对百度或类似企业感...
【标题】:“百度面试题1” 【描述】:这部分内容主要涵盖了Java编程语言中的关键概念,包括抽象类、接口、基本数据类型、数组操作、HashMap的实现原理、接口与抽象类的区别、面向对象的四大特性(抽象、封装、继承...
根据给定的信息,我们可以从以下几个方面来探讨与“百度面试题 shell”相关的知识点: ### 一、斐波那契数列实现(Shell版) 题目要求使用Shell脚本编写斐波那契数列的生成器。这里提供的代码示例是Python语言的...
### 百度历年面试题答案解析 ...通过以上分析,我们可以看到,百度面试题涵盖了从概率题到数据库索引、再到Session管理等多个领域的问题,旨在全面考察应聘者的逻辑思维能力、计算机基础知识以及对实际应用场景的理解。
阿里面试20题 百度面试10题 华为面试10题 京东面试13题 腾讯面试37题 头条面试10题 项目经理面试常遇问题 经典面试题 程序员 IT经理 项目经理 面试题 研发经理 高级程序员 经典面试题
### 百度面试题之桶中取球(咖啡罐问题的变形) #### 一、题目背景及概述 在IT行业的面试中,经常会遇到一些看似与技术实现无关但实际上考验着求职者逻辑思维能力和数学基础的问题。这类问题往往能够帮助面试官...
【知识点详解】 ...以上各个知识点涵盖了算法、数据结构、操作系统、网络、数学和概率等多个IT领域,都是程序员在面试中可能会遇到的问题。理解和掌握这些知识点对于提升编程技能和解决实际问题具有重要意义。