C编程:需要获取字符串中字母数的输出。 (新手)

我正在尝试完成一项作业,其中一部分作业是打印字符串中字母数量的输出。

我试图对指导员给我们的代码进行逆向工程,但是他的代码甚至无法正常工作。还是我做错了什么或缺少什么?

#include <stdio.h>
#include <string.h>

int main() {
    char str1[13] = "Hello"; 
    char str2[13] = "World";

    /* concatenates str1 and str2 */
    strcat(str1,str2);
    printf("strcat(str1,str2): %s\n",str1);

    /* total lenghth of str1 after concatenation */
    len = strlen(str1); 
    printf("strlen(str1) : %d\n",len); 
    return 0;
}

我得到的错误是:

test2.c:13:5:错误:使用未声明的标识符'len' len = strlen(str1); ^ test2.c:14:35:错误:使用未声明的标识符'len' printf(“ strlen(str1):%d \ n”,len);

如果我没有使用正确的标识符,我怎么知道哪个标识符覆盖了特定的命令?

我还将在我的作业中加入以下代码,非常感谢任何建议。

char first[10] = "first";
char last[10] = "last";
char  full[20] = " ";

strcat(full,first);
strcat(full," ");
strcat(full,last);

最终,我需要打印名称(名字,姓氏和全名),然后打印每个字符的数量。

感谢您的帮助。

iCMS 回答:C编程:需要获取字符串中字母数的输出。 (新手)

关于:

len = strlen(str1); 
printf("strlen(str1) : %d\n",len); 

函数:strlen()返回一个size_t而不是一个int,您需要为每个变量声明'type':

因此:

size_t len = strlen(str1); 
printf("strlen(str1) : %d\n",len); 

但是输出size_t的正确方法是使用格式说明符%zu而不是:%d

因此:

size_t len = strlen(str1); 
printf("strlen(str1) : %zu\n",len);

关于:

char  full[20] = " ";
strcat(full,first); 

数组full[]设置为在第一个字节中包含一个空格。使用strcat()将保留您可能不需要的空间。建议:

char  full[20] = {'\0'};
strcat(full,first);
strcat(full," ");
strcat(full,last);

或,不是很好,因为它会浪费一个字符串,该字符串只包含一个空格和一个NUL字节

char  full[20] = " ";
strcpy(full,last);
,

在这里,您尚未为len声明任何数据类型,这就是为什么会出现错误的原因。首先声明您需要的数据类型,在这种情况下,您可以检查strlen函数的文档。因此,请先声明len的数据类型,strlen函数的返回数据类型主要是size_t,但您可以将其用作int进行基本使用。在这里,如果您不知道数据类型并且不需要存储值,也可以使用

printf("strlen(str1) : %d\n",strlen(str1)); 
本文链接:https://www.f2er.com/2224215.html

大家都在问