今天去文思创新面试,考官问了我一个简单的实现,即:自己编写strcpm的实现,IBM曾经也考过写strcpy原型,这几个函数在面试的时候经常被考到,很具有代表性,突然被问起还真有点措手不及呢。现在记下供大家学习和以后温习:(下面的程序经本人通过)
1、Strcat函数原型如下:
char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数
{
char * address = strDest; //该语句若放在assert之后,编译出错
assert((strDest != NULL) && (strScr != NULL)); //对源地址和目的地址加非0断言
while(*strDest) //是while(*strDest!=’\0’)的简化形式
{ //若使用while(*strDest++),则会出错,因为++是不受循环
strDest++; //约束的。所以要在循环体内++;因为要是*strDest最后指
} //向该字符串的结束标志’\0’。
while(*strDest++ = *strScr++)
{
NULL; //该循环条件内可以用++,
} //此处可以加语句*strDest=’\0’;有无必要?
return address; //为了实现链式操作,将目的地址返回
}
以下是在VC6.0中调试的例子,函数名用strcata代替。
#include <stdio.h>
#include <assert.h>
char *strcata(char *strDest,const char *strScr)
{
char * address = strDest;
assert((strDest != NULL) && (strScr != NULL));
while(*strDest)
{
strDest++;
}
while(*strDest++ = *strScr++)
{
NULL;
}
return address;
}
void main()
{
char str1[100]={"i love"};
char str2[50]={"China"};
printf("%s\n",strcata(str1,str2));
}
2、Strcpy函数原型如下:
char *strcpy(char *strDest, const char *strScr)
{
char *address=strDest;
assert((strDest != NULL) && (strScr != NULL));
while(*strScr) //是while(*strScr != ’\0’)的简化形式;
{
*strDest++ = *strScr++;
}
*strDest = '\0'; //当strScr字符串长度小于原strDest字符串长度
return address; //时,如果没有改语句,就会出错了。
}
以下是在VC6.0中调试的例子,函数名用strcpya代替。
#include <stdio.h>
#include <assert.h>
char *strcpya(char *strDest, const char *strScr)
{
char *address = strDest;
assert((strDest != NULL) && (strScr != NULL));
while(*strScr)
{
*strDest++ = *strScr++;
}
*strDest = '\0';
return address;
}
void main()
{
char str1[100]={"i love"};
char str2[50]={"China"};
printf("%s\n",strcpya(str1,str2));
}
3、Strcmp函数原型如下:
int strcmp (const char *str1,const char *str2)
{
int len = 0;
assert((str1 != '\0') && (str2 != '\0'));
while(*str1 && *str2 && (*str1 == *str2))
{
str1++;
str2++;
}
return *str1-*str2;
}
以下是在VC6.0中调试的例子,函数名用strcmpa代替。
#include <stdio.h>
#include <assert.h>
int strcmpa (const char *str1,const char *str2)
{
int len = 0;
assert((str1 != '\0') && (str2 != '\0'));
while(*str1 && *str2 && (*str1==*str2))
{
str1++;
str2++;
}
return *str1-*str2;
}
void main()
{
char str1[100] = {"i love"};
char str2[50] = {"China "};
printf("%d\n",strcmpa(str1,str2));
}
4、Strlen函数原型如下:
int strlen(const char *str)
{
int len = 0;
assert(str != NULL);
while(*str++)
{
len++;
}
return len;
}
以下是在VC6.0中调试的例子,函数名用strlena代替。
#include <stdio.h>
#include <assert.h>
int strlena(const char *str)
{
int len = 0;
assert(str != NULL);
while(*str++)
{
len++;
}
return len;
}
void main()
{
char str1[100] = {"i love"};
char str2[50] = {"China "};
printf("%d\n",strlena(str1));
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lsxk2008/archive/2010/03/27/5422748.aspx
分享到:
相关推荐
根据提供的文件信息,本文将详细解释C语言中的四个字符串处理函数:`strcpy`, `strcmp`, `strlen`, 和 `strcat` 的功能与实现原理。这些函数在日常编程中极为常见,掌握它们对于深入理解C语言及其字符串操作至关重要...
在C语言中,字符串处理是非常常见的一项任务,而`strcpy`、`strcmp`、`strlen`和`strcat`这四个函数则是C语言标准库中的基本字符串操作函数。它们分别用于字符串的复制、比较、长度获取和连接。 1. `strcpy`函数: ...
正确地包含头文件和使用函数原型是编写无错误C代码的关键。 此外,函数调用的顺序和作用域规则也需牢记。局部变量只在函数内部有效,而全局变量在整个程序中都是可见的。理解函数的递归调用以及如何避免栈溢出也是...
因此,使用`strncpy()`时,最好让`n`等于`strlen(src)+1`,以确保复制整个字符串并添加结束的空字符,但这与`strcpy()`的行为就非常相似了。 总结来说,`strcpy()`简单地复制整个字符串,而`strncpy()`提供了更精细...
例如,`printf`函数用于格式化输出,`scanf`用于从标准输入读取数据,`malloc`和`free`分别用于动态分配和释放内存,`strlen`用于计算字符串长度,`strcpy`和`strcat`则用于字符串的复制和连接。 tcsearch.exe这个...
在"Turbo C 2.0 函数中文说明大全系列.txt"这个文件中,可能会详细列出每个函数的原型、参数、返回值和使用示例,这对于初学者来说是非常宝贵的参考资料。同时,"www.pudn.com.txt"可能包含了更多关于这个资源的来源...
手册详细列出了C语言中的常见函数,包括它们的函数原型、参数说明以及返回值类型。函数原型是指函数声明的格式,它描述了函数的名称、返回类型以及接收的参数类型。例如,`printf()`函数的原型是: ```c int printf...
18. **`strcpy`**: 函数原型为`char* strcpy(char* strDestination, const char* strSource);`。此函数将`strSource`的内容复制到`strDestination`中,`strDestination`必须有足够的空间存储完整的字符串。 19. **`...
在编程实践中,掌握C语言函数的使用技巧,不仅能够写出更高效、更安全的代码,还为理解其他高级编程概念打下坚实基础。因此,C语言函数速查手册是每位C程序员不可或缺的参考资料。通过持续查阅和实践,开发者可以...
C语言以其简洁、高效和强大的系统级编程能力著称,其标准库中包含了大量函数,如输入输出操作(`printf`, `scanf`)、内存管理(`malloc`, `free`)、字符串处理(`strcpy`, `strlen`)等。手册通常会详尽地列出每个...
在实际开发中,掌握这些函数原型及其用法对于编写高效且可靠的C语言程序至关重要。例如,`malloc()`和`free()`用于内存管理,避免了内存泄漏;`printf()`和`scanf()`在控制台交互时提供便利;`strcat()`和`strncat()...
使用"C语言函数速查"这样的工具,开发者可以通过搜索关键字快速找到特定函数的详细信息,包括函数原型、参数说明、返回值和使用示例。这能帮助初学者更快地理解和记忆函数的用法,也能为经验丰富的开发者提供快速...
- `string.h`:字符串处理函数,如`strcpy()`(复制字符串)和`strlen()`(计算字符串长度)。 6. **递归函数**: - 函数在其定义中调用自身。例如,计算阶乘的递归函数: ```c int factorial(int n) { if (n ...
- **字符串处理函数**:如`strlen`计算字符串长度,`strcpy`和`strcat`复制或连接字符串。 - **内存管理函数**:如`malloc`动态分配内存,`free`释放内存,`calloc`一次性初始化内存。 - **数学运算函数**:如`sqrt`...
2. 字符处理函数:如`strlen`计算字符串长度,`strcpy`和`strcat`用于复制和连接字符串,`strcmp`比较字符串等。 3. 数学函数:如`sqrt`计算平方根,`pow`进行幂运算,`sin`、`cos`和`tan`计算三角函数等。 4. 非...
- 函数原型是函数声明的一种形式,它只包含函数的返回类型和参数列表,用于确保函数调用的正确性。 了解并熟练掌握这些知识点,将有助于编写高效、清晰的C语言程序。在实际编程过程中,可以结合`C语言函数大全`这...
"C语言函数详解大全"是一个针对C语言函数的全面参考资料,它包含了C语言开发过程中可能用到的所有函数,每个函数都有详尽的功能解释、使用方法以及示例代码,是学习和查阅C语言函数的宝贵资源。 C语言中的函数是...
C函数速查表通常会包含这些函数的原型、参数描述、返回值和使用示例,方便开发者快速查阅。例如,当你需要处理字符串时,你可以快速找到关于`strcpy`的用法,了解如何安全地复制一个字符串。 总之,C函数速查表是...
例如,`printf`函数用于格式化输出,`scanf`用于从标准输入读取数据,`malloc`和`free`分别用于动态内存分配和释放,`strlen`用于计算字符串长度,`strcpy`和`strcat`处理字符串复制和连接等。这些函数是C语言编程的...