【问题标题】:C Programming : Need to get output of the number of letters in a string. (Newbie)C 编程:需要输出字符串中的字母数。 (新手)
【发布时间】:2020-06-02 02:57:21
【问题描述】:

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

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

#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);

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

感谢您的帮助。

【问题讨论】:

  • 试试int len = strlen(str1);
  • 您怎么知道必须声明char str1char str2,但不知道如果要使用它也必须声明int len?您可以通过阅读函数本身的文档找到所需的标识符类型。 strlen 的文档告诉你它返回什么类型,用于存储该返回值的变量必须是该类型。

标签: c count character strcat


【解决方案1】:

关于:

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

函数:strlen() 返回 size_t 而不是 int,您需要为每个变量声明“类型”:

因此:

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, first);
strcat(full, " ");
strcat(full, last);

【讨论】:

    【解决方案2】:

    这里您没有为 len 声明任何数据类型,这就是您收到错误的原因。首先声明你想要的数据类型,在这种情况下你可以查看 strlen 函数的文档。所以先尝试声明len的数据类型,strlen函数的返回数据类型主要是size_t,但基本可以用int作为基本使用。在这里,如果您不了解数据类型并且不需要存储值,您也可以交替使用

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

    【讨论】:

      猜你喜欢
      • 2013-08-05
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 2023-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多