#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;
}
2021-03-10 字符串内容学习
最新推荐文章于 2023-07-23 15:39:58 发布