C语言 读取字符串数组中的字符串并获取字符串的长度

#include <stdio.h>
#define LENGTH 128
#define NUMBER 5

int main(void){
	int i;
	char s[NUMBER][LENGTH];
	
	for(i = 0; i < NUMBER; i++){
		printf("s[%d] : ", i);
		scanf("%s", s[i]);
	}
	
	puts("-----------打印字符串-----------");
	
	for(i = 0; i < NUMBER; i++){
		printf("s[%d] = \"%s\"\n", i, s[i]);
	}
	
	return 0;
}

程序中的数组s是5行128列的二维数组,即每行的字符串长度为127(null字符占用1节存储空间),可存储5行字符串。
注:字符串数据,将它们传入scanf函数时不可以带 & 运算符。

运行结果:
在这里插入图片描述


#include <stdio.h>
#define LENGTH 128

int str_length(const char s[]){
	int len = 0;
	
	while (s[len]){
		len++;
	}
	return len;  // 返回数组str中首个值为null的元素的下标值
}

int main(void){
	char str[LENGTH];
	
	printf("请输入字符串:");
	scanf("%s", str);
	
	printf("字符串\"%s\"的长度是 %d。 \n", str, str_length(str));
}

运行结果:
在这里插入图片描述
while 语句在循环条件表达式为非0的情况下,会执行循环体语句。该循环语句,会从头开始遍历数组。
循环继续的条件是, s[len]不是0,即不是null字符。变量len的初始值为0,每次执行循环体语句就自增1,直至出现null字符为止。

数组的长度为128,实际存储的长度只有5,剩下的都是空的。由此可知,字符串不一定正好撑满字符串数组。因为字符串中含有表示其末尾的null字符,所以第一个字符到 ‘\0’ (的前一个字符)为止的字符数,就是该字符串的长度。

使用指针遍历,获取字符串长度
#include <stdio.h>

int str_length (const char *s){
	int len = 0;
	
	while (*s++){
		len++;
	}
	
	return len;
}

int main(void){
	char str[128];
	
	printf("请输入字符串:");
	scanf("%s", str);
	
	printf("字符串\"%s\"的长度是%d。\n", str, str_length(str));
	
	return 0;
}
使用库中的函数获取字符串的长度
头文件原形说明返回值
#include <string.h>size_t strlen(const char *s)求出s指向的字符串的长度(不包括null字符)。返回s指向的字符串的长度。
#include <stdio.h>
#include <string.h>

int main(void){
	char *p = "vvcat";
	
	printf("字符串的长度为%d", strlen(p));
	
	return 0;
} 
实现strlen函数
#include <stdio.h>

size_t strlen(const char *s){
	size_t len = 0;
	
	while(*s++){
		len++;
	}
	
	return len;
} 

int main(void){
	char *p = "vvcat";
	
	printf("字符串的长度为%d", strlen(p));
	
	return 0;
} 
  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值