轻语远歌 发表于 2024-9-12 21:03:46

用c实现strlen strcat 以及strcmp函数要求不使用指针表示法

用c实现strlen   strcat以及strcmp函数要求不使用指针表示法

FishC 发表于 2024-9-12 21:03:56

好的,鱼油!为了不使用指针表示法,我们可以使用数组下标来实现 `strlen`、`strcat` 和 `strcmp` 函数。以下是这三个函数的代码:

### 实现 `strlen`

int my_strlen(const char s[]) {
    int length = 0;
    while (s != '\0') {
      length++;
    }
    return length;
}

### 实现 `strcat`

void my_strcat(char dest[], const char src[]) {
    int i = 0, j = 0;
    // 找到dest末尾
    while (dest != '\0') {
      i++;
    }
    // 追加src到dest末尾
    while (src != '\0') {
      dest = src;
      i++;
      j++;
    }
    dest = '\0';
}

### 实现 `strcmp`

int my_strcmp(const char s1[], const char s2[]) {
    int i = 0;
    while (s1 != '\0' && s2 != '\0') {
      if (s1 != s2) {
            return s1 - s2;
      }
      i++;
    }
    return s1 - s2;
}

这三段代码分别实现了 `strlen`、`strcat` 和 `strcmp` 函数,并且没有使用指针表示法。希望这对你有帮助!如果有任何问题,请随时询问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

人造人 发表于 2024-9-12 21:42:49

#include <stdio.h>

size_t strlen_(const char *str) {
    if(!*str) return 0;
    return strlen_(str + 1) + 1;
}

int main(void) {
    char buff;
    scanf("%s", buff);
    printf("str: \"%s\", strlen: %zu\n", buff, strlen_(buff));
    return 0;
}

人造人 发表于 2024-9-12 21:43:58

#include <stdio.h>

size_t strlen_(const char str[]) {
    if(!str) return 0;
    return strlen_(&str) + 1;
}

int main(void) {
    char buff;
    scanf("%s", buff);
    printf("str: \"%s\", strlen: %zu\n", buff, strlen_(buff));
    return 0;
}

人造人 发表于 2024-9-12 21:53:06

反斜杠让吃了

页: [1]
查看完整版本: 用c实现strlen strcat 以及strcmp函数要求不使用指针表示法