用指定大小定义字符数组指针

3
我需要一个介于以下两个声明之间的交叉声明:
char string[6];
char * string;

我需要一个固定大小的指针,而且这么简单的东西我不想使用malloc

这个char数组只需要被赋值并通过下面的函数检索即可。(但是在循环中需要分开声明) 最好的方法是什么?

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

1
一个 char * 有什么问题吗?(除了它应该是一个 const char * 之外。) - Oliver Charlesworth
仅使用const char *是好习惯还是必须的?由于它被设置为“words”,因此无法更改,我理解这一点,但为什么要添加const - SSH This
3个回答

4

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

const char string[] = "words";

如果您只需要指向一个固定大小的小内存块,可以按以下方式使用它:
const int STR_LEN = 10;
char str[STR_LEN];

... loop, etc

strncpy(string, "1234567890", STR_LEN);

... etc

我忘了提到,赋值和访问必须在循环中执行(因此需要先声明)。 - J V

3

由于你已经声明不能使用@nightcracker的解决方案,我认为你需要使用strncpy()来分配字符串。

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

我猜在一个真正的程序中,你不会使用字符串字面量,因此需要使用strncpy()


1
那就这样吧,我本来希望避免它,但似乎没问题。 - J V

1

为什么不使用这个:

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

(或者你的问题不够清晰)


+1:同意。这回答了问题的陈述。如果不合适,那么问题需要澄清。 - Oliver Charlesworth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接