标识分配给指针的地址大小

Identify the size of the address assigned to the pointer

在我下面的代码中:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZ 256   //arbitrary value

typedef char text_t;
text_t text[SIZ];


text_t *create_text()
{
    text_t *c;
    strcpy(text,"");
    c= text;
    return c;
}


int main()
{

text_t *point_to_text;

point_to_text=create_text();

printf("length of the returned pointer")

    return 0;

}

我想分配 point_to_text 一个长度为零的字符串。我使用 strcpy(text,""); 来复制一个空字符串。在这种情况下,如何显示文本的长度为零。另外,如果我使用 strcpy(text,"abc"); ,在这种情况下如何显示长度为 3?

你需要的是在返回的指针point_to_text上使用strlen()

假设您要返回一个正确的 string [即以 null 结尾],strlen() 将为您提供字符串的长度,即字符串中存在的有效元素(不包括空终止符)。

你可以做到

printf("length of the returned string is %zu\n", strlen(point_to_text));

您可以使用

  length =  strlen(point_to_text);

C 中的字符串字面量是指存储在以空字符(\0) 结尾的连续内存位置的ASCII 字符代码。

strlen() 期望输入是指向以空字符(0 或 '\0')终止的常量字符字符串的指针。函数 returns 不包括空字符的字符串的长度。