数组指针,函数,字符串

一、数组名作函数参数

数组名做函数参数,函数的形参会退化成指针

//形参改变实参
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<math.h>
#include<stdlib.h>
/*
void my_strcat(char* ch1, char* ch2)
{
int i = 0;
while (ch1[i] != ‘\0’) //ch1的结果 strlen(ch1)
{
i++;
}
printf("%d\n", i);//结果5
printf("%d\n", strlen(ch1));//结果5
int j = 0;
while (ch2[j] != ‘\0’)
{
ch1[i + j] = ch2[j];
j++;
}
}
/
/

void my_strcat(char* ch1, char* ch2)
{
int i = 0;
while (ch1[i] != ‘\0’)
{
i++;
}
int j = 0;
while (ch2[j] != ‘\0’)
{
*(ch1+i + j) = (ch2+j);//指针加偏移量
j++;
}
}
/
void my_strcat(char
ch1, char
ch2)
{
while (*ch1)
ch1++;
while (*ch2)
{
*ch1 = *ch2;
ch1++;
ch2++;
}
}
int main()
{
char ch1[100] = “hello”;
char ch2[] = “world”;
my_strcat(ch1, ch2);
printf("%s\n", ch1);
return EXIT_SUCCESS;
}

二、字符串去空格

char ch[]="h e l l o "; //后面自加\0;

//去空格
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<math.h>
#include<stdlib.h>
/*
void remore_space(char* ch)
{
char str[100] = {0};
int i = 0;
int j = 0;
while (ch[i] != ‘\0’)//结尾停止
{
if (ch[i] != ’ ')
{
str[j] = ch[i];//有效值赋值
j++;
}
i++;
}
}
/
void remore_space(char
ch)
{
char* ftemp = ch;//用来遍历字符串
char* rtemp = ch;//记录非空格字符串
while (*ftemp)
{
if (*ftemp != ’ ')
{
*rtemp = *ftemp;
rtemp++;
}
ftemp++;
}
*rtemp = 0;//结尾加\0
}
int main()
{
char ch[] = “h e l l o w o r l d “;
remore_space(ch);
printf(”%s\n”, ch);
return 0;
}

三、指针作为函数返回值

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<math.h>
#include<stdlib.h>
char* my_strchr01(char* str, char ch)//数组方式
{
int i = 0;
while (str[i])//不等于\0
{
if (str[i] == ch)
{
return &str[i];
}
i++;
}
return NULL;//表示空指针
}
char* my_strchr02(char* str, char ch)//指针方式
{
while (*str)
{
if (str == ch)
return str;
str++;
}
return NULL;
}
int main()
{
char str[] = “hello world”;
char
p = my_strchr02(str, ‘e’);//打印本身及接下去非\0的
if (p == NULL)
{
printf(“未找到\n”);
}
else
{
printf("%s\n", p);
}
return EXIT_SUCCESS;
}

四、字符串查找字符串

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<math.h>
#include<stdlib.h>
char* my_strstr(char* src, char* dest)
{
char* fsrc = src;//遍历源字符串指针
char* rsrc = src;//记录相同字符串首地址
char* tdest = dest;
while (*fsrc)
{
rsrc = fsrc;
while (*fsrc == *tdest&&*fsrc!=’\0’)
{
fsrc++;
tdest++;
}
if (tdest == ‘\0’)
{
return rsrc;
}
//回滚
tdest = dest; //目标字符串更新到起始位置
fsrc = rsrc;
fsrc++;
}
return NULL;
}
int main()
{
char src[] = “hello world”;
char dest[] = “llo”;
char
p = my_strstr(src, dest);
printf("%s\n", p);
return EXIT_SUCCESS;
}

原文链接:http://blog.qmgua.com/?id=126

=========================================

http://blog.qmgua.com/ 为 “布尔博客” 唯一官方服务平台,请勿相信其他任何渠道。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸运的涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值