定义具有大小的 char 数组指针

发布于 2024-11-04 03:48:53 字数 302 浏览 2 评论 0原文

我想要在下面的两个声明之间进行交叉:

char string[6];
char * string;

我需要一个具有固定大小的指针,并且我不想想要使用malloc来完成这么简单的事情。

这个 char 数组需要做的就是分配一个值并通过函数检索它,如下所示。 (但在循环中,因此需要单独声明)执行此操作的最佳方法是什么?

string = "words";
printf("%s",string);

I want a cross between the two declarations below:

char string[6];
char * string;

I need a pointer with a fixed size and I don't want to use malloc for something this simple.

All this char array needs to do is be assigned a value and have it retrieved by a function as seen below. (But in a loop hence the separate declaration) What is the best way to do this?

string = "words";
printf("%s",string);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

柠栀 2024-11-11 03:48:53

定义一个常量数组,其大小由初始化器计算:

const char string[] = "words";

如果您只想要一个指向固定大小的小内存量的指针,只需像这样使用它:

const int STR_LEN = 10;
char str[STR_LEN];

... loop, etc

strncpy(string, "1234567890", STR_LEN);

... etc

Define a constant array of which the size gets counted by the initializer:

const char string[] = "words";

If you just want a pointer to a fixed size amount of memory that is small, just use it like this:

const int STR_LEN = 10;
char str[STR_LEN];

... loop, etc

strncpy(string, "1234567890", STR_LEN);

... etc
九命猫 2024-11-11 03:48:53

既然您现在已经声明不能使用@nightcracker的解决方案,我认为您需要使用 strncpy() 来分配给字符串。

char string[6];
/* .... loop code */
strncpy(string, "words", 6);
printf("%s", string);

我猜想在真实的程序中您不会使用字符串文字,因此需要 strncpy()

Since you have now stated that you can't use @nightcracker's solution, I think you need to use strncpy() to assign to the string.

char string[6];
/* .... loop code */
strncpy(string, "words", 6);
printf("%s", string);

I guess that in a real program you wouldn't be using a string literal, hence the need for strncpy().

山有枢 2024-11-11 03:48:53

为什么不使用这个:(

const char * string;
...
string = "words";
printf("%s",string);

或者你的问题不清楚)

Why not to use this:

const char * string;
...
string = "words";
printf("%s",string);

(or your question is not clear)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文