一、字符串库函数strcpy的实现
#include<stdio.h> //#include<string.h> #include<assert.h> void my_strcpy(char* dest, char* src) { assert (dest != NULL);//断言传进来的不会是空指针 assert(src != NULL); while (*src != '\0')//设置循环条件,字符串最后会有个'\0' { *dest = *src; dest++; src++; } *dest = *src;//处理'\0',将'\0'也拷贝进去 } //简写版 void my_strcpy(char* dest, char* src) { assert(dest && src); while (*dest++ = *src) { ; } } int main() { char arr1[20] = "xxxxxxxxxxxxx"; char arr2[] = "hello"; my_strcpy(arr1, arr2); printf("%s\n", arr1); return 0; }
二、字符串库函数strlen的实现
#include<stdio.h> //#include<string.h> #include<assert.h> int my_strlen (char *dest)//定义一个int 类型的函数 { int i=0; assert(dest!=NULL); while (*dest != '\0')//当指针向后运动没遇到'\0',i++ { i++; dest++; } return i;//返回i } int main() { char arr1[20] = "xxxxxxxxxxxxx"; int i=0; i = my_strlen(arr1);//定义一个i去接收返回值 printf("%d\n", i); return 0; }
三、简单的文字编程题
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
以下为4个嫌疑犯的供词:
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手
#include<stdio.h> int main() { int killer = 0; for (killer = 'a'; killer <= 'd'; killer++) {//利用了判断语句对就为1,错就为0的特点,加上字符所对应的ASCLL码值是连续的 if ((killer != 'a') + (killer == 'c') + (killer == 'd') + (killer != 'd') == 3) { printf("%c\n", killer); } } return 0; }