(C语言)字符串函数strcpy和strlen的实现,以及简单的文字编程题(派大星看了都会写)

简介: (C语言)字符串函数strcpy和strlen的实现,以及简单的文字编程题(派大星看了都会写)

一、字符串库函数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;
}
相关文章
|
1月前
|
NoSQL C语言 索引
十二个C语言新手编程时常犯的错误及解决方式
C语言初学者常遇错误包括语法错误、未初始化变量、数组越界、指针错误、函数声明与定义不匹配、忘记包含头文件、格式化字符串错误、忘记返回值、内存泄漏、逻辑错误、字符串未正确终止及递归无退出条件。解决方法涉及仔细检查代码、初始化变量、确保索引有效、正确使用指针与格式化字符串、包含必要头文件、使用调试工具跟踪逻辑、避免内存泄漏及确保递归有基准情况。利用调试器、编写注释及查阅资料也有助于提高编程效率。避免这些错误可使代码更稳定、高效。
141 12
|
1月前
|
C语言 C++
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
|
11天前
|
存储 C语言
【c语言】字符串函数和内存函数
本文介绍了C语言中常用的字符串函数和内存函数,包括`strlen`、`strcpy`、`strcat`、`strcmp`、`strstr`、`strncpy`、`strncat`、`strncmp`、`strtok`、`memcpy`、`memmove`和`memset`等函数的使用方法及模拟实现。文章详细讲解了每个函数的功能、参数、返回值,并提供了具体的代码示例,帮助读者更好地理解和掌握这些函数的应用。
13 0
|
25天前
|
存储 安全 编译器
深入C语言库:字符与字符串函数模拟实现
深入C语言库:字符与字符串函数模拟实现
|
1月前
|
C语言
C语言常见字符函数和字符串函数精讲
C语言常见字符函数和字符串函数精讲
|
1月前
|
C语言
【C语言】模拟实现深入了解:字符串函数
【C语言】模拟实现深入了解:字符串函数
|
1月前
|
Serverless 编译器 C语言
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
|
2月前
|
Linux C语言
C语言 多进程编程(七)信号量
本文档详细介绍了进程间通信中的信号量机制。首先解释了资源竞争、临界资源和临界区的概念,并重点阐述了信号量如何解决这些问题。信号量作为一种协调共享资源访问的机制,包括互斥和同步两方面。文档还详细描述了无名信号量的初始化、等待、释放及销毁等操作,并提供了相应的 C 语言示例代码。此外,还介绍了如何创建信号量集合、初始化信号量以及信号量的操作方法。最后,通过实际示例展示了信号量在进程互斥和同步中的应用,包括如何使用信号量避免资源竞争,并实现了父子进程间的同步输出。附带的 `sem.h` 和 `sem.c` 文件提供了信号量操作的具体实现。
【C语言】一篇就够了(建议收藏)——超详解sizeof与strlen的用法
【C语言】一篇就够了(建议收藏)——超详解sizeof与strlen的用法
【C语言】一篇就够了(建议收藏)——超详解sizeof与strlen的用法
|
24天前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
31 3