C语言学习笔记—字符串

字符串定义方式及输出

#include <stdio.h>
#include <stdlib.h>
int main()
{
	
    //字符串定义方式1
    int i;
    char str[5] = {'a','b','c','d','e'};
    for(i=0;i<sizeof(str)/sizeof(str[0]);i++)
    {
		printf("%c  ",str[i]);
    }
    putchar('\n');
    //字符串定义方式2
    char str2[5] = "abcde";
    for(i=0;i<sizeof(str2)/sizeof(str2[0]);i++)
    {
		printf("%c  ",str2[i]);
    }
    putchar('\n');
     //字符串定义方式3
    char str3[] = "abcdefghijklmnopq";//定义时可以省略数组长度,系统会自动根据初始值确定数组长度
    for(i=0;i<sizeof(str3)/sizeof(str3[0]);i++)
    {
		printf("%c  ",str3[i]);
    }
    putchar('\n');
    char *pstr = "hello gang gang";//指针方式如果操作不当易造成段错误
    printf("%s",pstr);
	system("pause");
	return 0;
}

字符串在内存中的存储方式

#include <stdio.h>
#include <stdlib.h>
//字符串的存储方式
int main()
{
	//连续的空间,整个数组的大小是  元素个数x元素大小
	int a[3] = {1,2,3};
    printf("a数组的大小:%d\n",sizeof(a));
    printf("a数组元素的大小:%d\n",sizeof(a[0]));
    printf("a2数组元素的大小:%d\n",sizeof(int));
    printf("a数组元素的个数:%d\n",sizeof(a)/sizeof(a[0]));
    putchar('\n');
    //连续的空间,整个数组的大小是  元素个数x元素大小
    char a2[3] = {'a','b','c'};
    printf("a2数组的大小:%d\n",sizeof(a2));
    printf("a2数组元素的大小:%d\n",sizeof(a2[0]));
    printf("a2数组元素的大小:%d\n",sizeof(char));
    printf("a2数组元素的个数:%d\n",sizeof(a2)/sizeof(a2[0]));
    putchar('\n');
    //连续的空间,整个数组的大小是  元素个数x元素大小
    char a3[3] = "abc";
    printf("a2数组的大小:%d\n",sizeof(a3));
    printf("a2数组元素的大小:%d\n",sizeof(a3[0]));
    printf("a2数组元素的大小:%d\n",sizeof(char));
    printf("a2数组元素的个数:%d\n",sizeof(a3)/sizeof(a3[0]));
    putchar('\n');
    //连续的空间,整个数组的大小是  元素个数x元素大小
    char a4[] = "abc";
    printf("a2数组的大小:%d\n",sizeof(a4));
    printf("a2数组元素的大小:%d\n",sizeof(a4[0]));
    printf("a2数组元素的大小:%d\n",sizeof(char));
    printf("a2数组元素的个数:%d\n",sizeof(a4)/sizeof(a4[0]));
    
	system("pause");
	return 0;
}

结果:
在这里插入图片描述
我们发现,整型数组的大小是没有变化的,最后一个字符串的定义方式,结果是4,多了一个 \0 ,\0是字符串的结束标志
在输出字符串的时候,若果没有碰到’\0’,就不会停止输出,否则停止输出。
我们做个测试:

	int i = 0;
	while( a4[i] != '\0')
	{
		printf("Sc" , a4[i]);
		i++:
	}

结果同样也会是abc.
总之一句话:宇符串在内存中,除了有效字符以外,还会自动在后面补一个’\0’,作为字符串的结束标识

计算字符串中字符的个数

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
	int a[] = {1,2,3};
    printf("数组a的元素个数为:%d\n",sizeof(a)/sizeof(a[0]));
    
    char a2[128] = "hello";
    printf("数组a2的元素个数为:%d\n",sizeof(a2)/sizeof(a2[0]));
    
    printf("a2字符串的真实字符个数为:%d\n",strlen(a2));
	system("pause");
	return 0;
}

根据结果可知,sizeof不能能计算字符串中有效字符个数。可用strlen,其在计算字符串大小时遇到‘\0’就结束计数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值