【问题标题】:Why is my self made function having 1 more added to it? [duplicate]为什么我的自制函数又增加了 1 个? [复制]
【发布时间】:2021-12-26 10:44:43
【问题描述】:

我尝试创建自己的 strlen 函数,当我尝试运行它时,我的计数器总是得到 +1 值。例如。如果是 3 个字符,它将返回 4 个等。这是我的代码:

#include <stdio.h>
#define MAX 1000
void length(char string[MAX]){
    int i, counter = 0; 
    for(i=0;string[i]!='\0';i++){
       counter++;
    }
    printf("Your string has %d characters", counter);
}
int main(){
    char ch[MAX];
    printf("Enter a string: ");
    fgets(ch, MAX, stdin);
    length(ch);
}

对于像我这样的初学者的任何提示也将不胜感激,谢谢! :)

【问题讨论】:

  • fgets\n 留在字符串的末尾。
  • @RetiredNinja 是否应该基于length() 逻辑?
  • @KagisoMarvinMolekwa 是的,\n != \0
  • @RetiredNinja 哦...是的。
  • 是不是因为换行后有一个空字符?:是的,否则就不是字符串。根据定义,字符串以空字符结尾。

标签: c function


【解决方案1】:

来自the fgets() docs

从给定的文件流中最多读取 count - 1 个字符并将它们存储在 str 指向的字符数组中。如果找到换行符,解析将停止,在这种情况下 str 将包含该换行符,或者如果出现文件结尾。 [...]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-13
    • 2019-09-14
    • 2021-12-22
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    相关资源
    最近更新 更多