确定分配给指针的地址大小

时间:2015-02-18 07:17:20

标签: c string pointers strlen

在我的代码中:

#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?

2 个答案:

答案 0 :(得分:2)

您可以使用

  length =  strlen(point_to_text);

C中的字符串文字表示存储在由空字符(\ 0)终止的连续内存位置的ASCII字符代码。

strlen()期望输入是指向由null char(0或&#39; \ 0&#39;)终止的常量char字符串的指针。该函数返回字符串的长度,不包括null char。

答案 1 :(得分:1)

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

假设您正在返回正确的字符串 [即空终止],strlen()将为您提供字符串的长度,即存在的有效元素的数量在字符串中(不包括空终止符)。

你可以做到

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