我在不使用 strlen 的情况下从命令行打印字符串的长度时遇到问题?

I have an issue printing the length of a string from the command line without using strlen?

你好,基本上我的程序的目的是当用户从命令行输入一个字符串时,它会打印出单词和大小。

例如

./commandline hello world

输出:

你好

世界

2

我想要做的是添加一个方法,该方法将在不使用 strlen 的情况下打印其长度,因此对于上面的示例,输出的长度应为 10。

这是我的代码,我是 c 的新手。

int main(int args, char *argv[]){
     for(int i =1; i <args; i++){
        printf("%s\n", argv[i]);
        size_t(argv[i]);
     }
     printf("%d\n", args -1);
}
size_t string_length( char *argv[]){
    int length = 0;
    while(argv[length]!='[=11=]')  
    {
        length++;
        printf("%i\n", length);
    }
    return 0;
}

我的程序不打印长度,只打印输入的字符串和大小。

 for(int i =1; i <args; i++){
     printf("%s\n", argv[i]);
     size_t(argv[i]);
 }
 printf("%d\n", args -1);

在这里你没有在任何地方调用你的函数。你的程序只是打印参数和它们的数量。 size_t(argv[i]); 仅将 argv[i] 转换为名为 size_t 类型 。当然,这不是你想要的。将其替换为 string_length(argv[i]);。请注意,您最好更改此函数的第一个参数的类型。

此外,您应该 return length 在您的 string_length 函数中。

size_t string_length( char *arg){
    size_t length = 0;
    while(arg[length])  
    {
        length++;
    }
return length;
}

试试这个

size_t string_length( char *argv[]);
int main(int args, char *argv[]){
     for(int i =1; i <args; i++){
        printf("%s\n", argv[i]);
        string_length(argv[i]);
     }
     printf("%d\n", args -1);
}

size_t string_length( char *argv[]){


    int length = 0;
    while(argv[length]!='[=10=]')  
    {
        length++;

    }
    printf("%i\n", length);
    return length;

}