#include <stdio.h>int string_length(char str[]) { int len = 0; while (str[len] != '\0') { len++; } return len;}int main() { char str[100]; printf("请输入一个字符串: "); scanf("%s", str); int len = string_length(str); printf("字符串为: %s\n", str); printf("字符串长度为: %d\n", len); return 0;}
时间: 2024-04-27 10:24:45 浏览: 78
这是一个C语言程序,用于计算输入的字符串的长度。程序定义了一个`string_length`函数,该函数通过循环遍历字符串中的每个字符,直到遇到字符串的结尾符`\0`为止,统计字符的数量,然后返回字符串的长度。
在`main`函数中,程序首先定义了一个大小为100的字符数组`str`,并通过`scanf`函数从标准输入中获取用户输入的字符串。然后,程序调用了`string_length`函数计算字符串的长度,并将结果打印到控制台中。
需要注意的是,程序中的`scanf`函数存在安全问题。用户输入的字符串可能会超出字符数组的存储范围,导致程序出现缓冲区溢出的安全漏洞。建议使用`fgets`函数代替`scanf`函数来获取用户输入的字符串,以提高程序的安全性。
相关问题
#include <stdio.h>int string_length(char str[]) { int len = 0; while (str[len] != '\0') { len++; } return len;}int main() { char str[100]; printf("请输入一个字符串: "); scanf("%s", str); int len = string_length(str); printf("字符串为: %s\n", str); printf("字符串长度为: %d\n", len); return 0;}这个程序哪里有错误
这个程序的错误在于最后一行的右括号多了一个中文字符“}”,导致编译器无法正确识别程序的结构,从而出现语法错误。将这个字符删除即可。
以下是正确的程序代码:
```c
#include <stdio.h>int string_length(char str[]) { int len = 0; while (str[len] != '\0') { len++; } return len;}int main() { char str[100]; printf("请输入一个字符串: "); scanf("%s", str); int len = string_length(str); printf("字符串为: %s\n", str); printf("字符串长度为: %d\n", len); return 0;}
```
建议在编写程序时,注意括号的匹配,避免出现类似的错误。
用 c 语言优化这个代码 #include<stdio.h> unsigned int getlen(char *s) { unsigned int len = 0; while (*s != '\0') { len++; s++; } return len; } int main() { char str[] = "hello world"; unsigned int len = getlen(str); std::cout << "The length of string \"" << str << "\" is " << len << std::endl; return 0; }
这段代码中包含了 C++ 代码的特性,因此不能直接用 C 语言编译器编译。下面是使用 C 语言实现的代码:
```c
#include <stdio.h>
unsigned int getlen(char *s) {
unsigned int len = 0;
while (*s != '\0') {
len++;
s++;
}
return len;
}
int main() {
char str[] = "hello world";
unsigned int len = getlen(str);
printf("The length of string \"%s\" is %u\n", str, len);
return 0;
}
```
这个代码的实现比较简单,主要是定义了一个函数 getlen,用于计算字符串的长度。在主函数中,我们定义了一个字符串数组 str,并将其作为参数传递给 getlen 函数来计算其长度。最后使用 printf 函数输出计算结果。
代码的输出结果为 "The length of string "hello world" is 11",表明字符串 "hello world" 的长度为 11 个字符。
阅读全文