#include<stdio.h> int len(char a[]) { int b=0; for(int i=0;a[i]!=0;i++) //a[i]!=0 表示数组中的i不为0 b++; return b; } int main() { printf("请输入字符串:"); char str[100]; gets(str); printf("长度为:%d",len(str)); return 0; }
时间: 2024-01-22 07:03:15 浏览: 80
这段代码看起来已经很简洁了,但是在实际使用中可能会存在一些问题,下面是一些可能的优化建议:
1. 在 `len()` 函数中,变量 `b` 可以直接声明为 `size_t` 类型,因为它表示的是数组长度,这个值不可能为负数。
2. 在 `len()` 函数中,可以使用指针来遍历数组,这样可以避免使用下标访问数组元素时的越界问题。
3. 在 `main()` 函数中,可以使用 `fgets()` 函数来读取用户输入的字符串,这样可以避免使用 `gets()` 函数时可能出现的缓冲区溢出问题。
4. 在 `main()` 函数中,可以使用 `%zu` 格式化符号来输出 `size_t` 类型的值。
下面是优化后的代码示例:
```c
#include <stdio.h>
size_t len(char *a) {
size_t b = 0;
while (*a++) {
b++;
}
return b;
}
int main() {
printf("请输入字符串:");
char str[100];
fgets(str, sizeof(str), stdin);
size_t length = len(str);
printf("长度为:%zu\n", length);
return 0;
}
```
相关问题
#include<stdio.h> #include<string.h> int main() { char str[100]; int len; gets(str); len=strlen(str); int i=0; for(int i=0;i<len;i++) { if(str[i]>='A' && str[i]<='Z') { char a=str[i]; int b=a-'A'; str[i]='A'+'Z'-a; } } puts(str); return 0; }
这是一段用C语言编写的程序代码,其功能是将输入的字符串中所有的大写字母转换成对应的小写字母,并输出转换后的字符串。
以下是对这段代码的详细解释:
1. 首先,程序定义了一个字符串数组 str,用于存储输入的字符串。
2. 然后,程序使用 gets 函数从标准输入中读取一行字符串,并将其存储到 str 数组中。
3. 程序使用 strlen 函数获取输入字符串的长度,并将其存储到 len 变量中。
4. 接下来,程序使用 for 循环遍历输入字符串中的每个字符。
5. 对于每个字符,程序使用 if 语句判断其是否为大写字母。
6. 如果该字符是大写字母,则程序将其转换成对应的小写字母。具体地,程序通过计算字符与 'A' 之间的距离,得到该字母在字母表中的位置,然后通过 'A' + 'Z' - a 的方式计算出对应的小写字母,并将其存储到 str 数组中。
7. 最后,程序使用 puts 函数输出转换后的字符串。
需要注意的是,这段代码没有对输入字符串的长度进行检查,如果输入的字符串长度超过了 str 数组的长度,则有可能导致程序崩溃。此外,该代码只支持 ASCII 码字符集,如果输入字符串中包含非 ASCII 码字符,则可能导致转换失败。
#include<stdio.h> #include<string.h> int main() { char a[100],max; int len; while (gets(a)) { len = strlen(a); max = a[0]; for (int i = 0; i < len; i++) { if (max < a[i]) max = a[i]; } for (int i = 0; i < len; i++) { printf("%c",a[i]); if (a[i] == max) printf("(max)"); } printf("\n"); } return 0; }
这是一个C语言程序,它的功能是对输入的字符串进行处理,并将其中最大的字符用“(max)”标记出来。程序使用了gets函数读入字符串,然后使用strlen函数获取字符串的长度。接着使用一个for循环遍历字符串中的每个字符,并用一个变量max记录当前最大的字符。最后再使用一个for循环输出字符串中的每个字符,并在最大的字符后面加上“(max)”标记。程序使用了标准输入输出函数,可以在命令行窗口运行。
阅读全文