2021-03-10 字符串内容学习

#include<stdio.h>
#include<stdlib.h>
#include<string.h>



void ziFuChuangDingYi()
{
	int a[1];
	// 和数组一样   前面写个数  后面一个一个加 ‘’ 
	char str1[2] ={'a','b'}; 
	//好一点  只用写个数    !!!前面个数比字符串个数多一个 因为字符串默认有一个 \0结尾 
	char str2[6] ="jiang";
	//更好  个数都不写 
	char str3[] ="jianglongjie";
	
	
	//for循环输出 把单个字符输出 
	for(int i=0;i<sizeof(str3)/sizeof(str3[0]);i++)
	{
		printf("%c",str3[i]);
	 } 
	printf("\n");
	
	//字符串输出 
	//字符串输出  字符串必须\0结尾 不然会有乱码
	 
	printf("字符串输出");
	printf("\n");
	printf("%s",str1);
	printf("\n");
	printf("%s",str3);
	printf("\n");
	// puts   会自动换行 
	puts(str1);
	puts(str2);
	puts(str3);
	printf("\n");
 } 
void ziFuChuangCuCun()
{
	int a[]={1,2,3,4};
	
	char str[]="jianglongjies dashuaige";
	
	printf("数组的大小是%d\n",sizeof(a));
	printf("数组的元素大小是%d\n",sizeof(a[0]));
	printf("数组的元素大小是%d\n",sizeof(int));
	printf("数组的元素个数是%d\n",sizeof(a)/sizeof(a[0]));
	
	printf("字符串的大小是%d\n",sizeof(str));
	printf("字符串的元素大小是%d\n",sizeof(str[0]));
	printf("字符串的元素大小是%d\n",sizeof(char));
	printf("字符串的元素个数是%d\n",sizeof(str)/sizeof(str[0]));
	printf("\n");
 } 
 
void ziFuStrlenAndSizeof()
{
	
	char str[]="jianglongjies dashuaige";
	//size 的会多一个       strlen 正常     字符串后面最后有个\0结束符号 
	printf("字符串的元素个数是%d\n",sizeof(str)/sizeof(str[0]));
	printf("字符串后面最后有结束符号\\0\n");
	printf("字符串的元素个数是%d\n",strlen(str));
	printf("\n");
	 
 } 
 void ziFuHanShu()
 {
 	char str1[]="江龙杰 大帅哥";
 	
 	char str2[]="江龙杰 小帅哥";
 	
 	char str3[128];
 	printf("字符串的个数是%d\n",strlen(str1));
 	
 	//后面的内容复制到前面去 
 	strcpy(str3,str1);
 	puts(str3);
 	
 	strncpy(str3, str2, 15);
 	puts(str3);
 	
 	//初始化 字符串   memset(void *s, int ch,size_tn); 将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s
	memset(str3,'\0',sizeof(str3)/sizeof(str3[0])); 	
	//char *strncpy(char *destinin, char *source, int maxlen);
	//只复制前几个   
	strncpy(str3,"jianglongjie chaojiwudi dashuaige",3); 
	puts(str3);
	
	//指针 要注意 
	char *strDest;
	strDest=(char *)malloc(128);
	memset(strDest,'\0',128); 
	printf("\n");	
 }
 void myputs(char *p){
 	//支付串 结尾有\0
	 for(int i;*p!='\0';i++)
	 {
	 putchar(*p++);
	 
	  } 
 } 
int  mygets(char *p){
	
	int count;
	if (p == NULL)
	{
	printf("内存非法");
	return 0;
	}
	else 
	 while(*p = getchar())
	 {
	 	if(*p == '\n')
	 	return count;
	 	else
		 {
		 count++;
		 p++;
		 }
	  } 
 } 
 void mymemset(char *p,char c,int size)
{
	while(size)// size 是长度  非零正数 
	{
		*p='c';
		p++;
		size--;
	}
 		
 	
 }
 void ziFuPi(){
 	 
 	 char *p=NULL;
 	 //自己定义的输出函数 
 	 
 	 p = (char *)malloc(128);
 	 mymemset(p,'c',128); // 没有结束\0 标志符  输出会有乱码 
	p[128]='\0';
	puts(p);  
  // memset(p,'c',128);
 	
 	
	 mygets(p);
 	 myputs(p);
 	 myputs(p);
 	
 	 int n = mygets(p);
 	 printf("你输入的字节是;%d\n",n);
 } 
int main()
{
	ziFuChuangDingYi();
	ziFuChuangCuCun();
	ziFuStrlenAndSizeof();
	
	ziFuHanShu();
	 
	ziFuPi();
	  
	
	return 0;
 } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值