使用循环语句 实现strlen strcmp函数
时间: 2024-04-05 09:25:31 浏览: 62
根据提供的引用内容,可以得知strlen和strcmp函数是C语言中的字符串函数,可以使用循环语句来实现它们的功能。
1. 实现strlen函数:
```c
int my_strlen(char* arr) {
int count = 0;
while (*arr != '\0') {
count++;
arr++;
}
return count;
}
```
上述代码中,使用while循环遍历字符串,每遍历一次计数器count加1,直到遍历到字符串的结尾'\0',返回计数器的值即为字符串的长度。
2. 实现strcmp函数:
```c
int my_strcmp(char* arr, char* brr) {
while (*arr == *brr) {
if (*arr == '\0') {
return 0;
}
arr++;
brr++;
}
return *arr - *brr;
}
```
上述代码中,使用while循环遍历两个字符串,每次比较两个字符串对应位置的字符是否相等,如果相等则继续比较下一个字符,直到遍历到字符串的结尾'\0'或者两个字符串对应位置的字符不相等,如果遍历到了字符串的结尾'\0',则说明两个字符串相等,返回0;否则返回两个字符串对应位置的字符的差值。
相关问题
用c++两种方法编写程序,创建包含 10 个数的数组,使用循环语句为数组赋值,输出 其中最大值及对应的元素下标。考虑整型、小数、字符等不同类型数组的情况
很高兴为您解答问题!
对于整型数组,可以使用以下两种方式来编写程序:
方法一:
#include <stdio.h>
int main()
{
int nums[10] = {0}; // 声明并初始化一个长度为 10 的整型数组
// 循环语句为数组赋值
for(int i = 0; i < 10; ++i)
{
printf("请输入第 %d 个整数:", i+1);
scanf("%d", &nums[i]);
}
// 找到数组中最大值及对应的元素下标
int max = nums[0], index = 0;
for(int i = 1; i < 10; ++i)
{
if(nums[i] > max)
{
max = nums[i];
index = i;
}
}
printf("最大值为:%d,下标为:%d\n", max, index);
return 0;
}
方法二:
#include <stdio.h>
int main()
{
int nums[10] = {0}; // 声明并初始化一个长度为 10 的整型数组
// 循环语句为数组赋值
int i = 0;
while(i < 10)
{
printf("请输入第 %d 个整数:", i+1);
scanf("%d", &nums[i]);
++i;
}
// 找到数组中最大值及对应的元素下标
int max = nums[0], index = 0;
i = 1;
while(i < 10)
{
if(nums[i] > max)
{
max = nums[i];
index = i;
}
++i;
}
printf("最大值为:%d,下标为:%d\n", max, index);
return 0;
}
对于小数类型数组,只需要将上面的 int 改成 float 即可,代码略。
对于字符类型数组,也可以使用相同的方法,只需将上面的 int 改成 char 即可,但是这种方式只适用于 ASCII 码,不适用于其它字符编码,如果涉及到其它字符编码,需要用 wchar_t 类型来代替 char 类型。同时,对于字符数组的比较,需要使用 strcmp() 函数而不是 > 和 < 运算符。另外,由于字符数组在输入时需要使用 scanf() 函数,因此需要注意格式化字符串的问题。具体可以参考下面代码:
#include <stdio.h>
#include <string.h>
int main()
{
char str[10][100]; // 声明并初始化一个长度为 10 的字符串数组
// 循环语句为数组赋值
for(int i = 0; i < 10; ++i)
{
printf("请输入第 %d 个字符串:", i+1);
scanf("%s", str[i]);
}
// 找到数组中最长的字符串及对应的元素下标
int max_len = strlen(str[0]), index = 0;
for(int i = 1; i < 10; ++i)
{
if(strlen(str[i]) > max_len)
{
max_len = strlen(str[i]);
index = i;
}
}
printf("最长的字符串为:%s,下标为:%d\n", str[index], index);
return 0;
}
re: printf("删除文件\n"); printf("输入你要删除的文件名(长度不超过10):"); scanf("%s",fileName); if(strlen(fileName)>10) { printf("文件名过长,请重新"); goto re; } for(int i=0;i<10;i++) { if(strcmp(F[i].name,fileName)==0) { record=i; for(int j=0;j<strlen(fileNa
这段代码实现了删除文件的功能。首先使用 `goto` 语句实现了一个简单的输入检查,要求文件名长度不超过 10 个字符。如果输入不符合要求,则返回标签 `re` 重新输入。
然后,使用一个循环遍历文件数组 `F`,查找要删除的文件。如果找到了该文件,则记录文件的编号到变量 `record` 中,并使用另一个循环遍历磁盘,找到该文件的位置和大小,并将磁盘对应位置的数据清空,同时将文件数组 `F` 对应位置的成员变量重置为初始值。
需要注意的是,该函数中没有对空闲块进行管理,删除文件后留下的空闲块将不会被合并。
阅读全文