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

    技术2025-11-10  5

    #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; }
    Processed: 0.013, SQL: 9