2011-05-02 55 views
2

字符数组指针我想下面这两个声明之间的交叉:定义与大小

char string[6]; 
char * string; 

我需要一个指针具有固定的大小,我想用malloc的东西这么简单。

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

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

什么是错了'字符*'? (好吧,除了它应该是一个'const char *'。) – 2011-05-02 01:38:08

+0

使用'const char *'只是一个好的形式吗?还是有必要?既然它被设置为“单词”,它不能改变,我明白这一点,但为什么要添加'const'? – 2013-01-15 20:53:37

回答

2

既然你现在说,你不能使用@ nightcracker的解决方案,我认为你需要使用strncpy()分配给字符串。

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

我想,在实际的程序中,你将不会被使用字符串字面量,因此对于strncpy()的需要。

+1

这样做,我希望避免它,但它看起来很隆重。 – 2011-05-02 01:38:09

3

定义一个常数阵列的大小被通过初始化计数:

const char string[] = "words"; 

如果只想一个指针的存储器的固定大小量的小,只使用它是这样的:

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

... loop, etc 

strncpy(string, "1234567890", STR_LEN); 

... etc 
+0

我忘了提及,分配和访问必须在一个循环中执行(因此事先声明) – 2011-05-02 01:33:50

+0

怎样才能用没有malloc的指针来完成? – 2011-05-02 01:35:00

1

为什么不使用这样的:

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

(或你的问题不明确)

+0

+1:同意。这回答了所述的问题。如果不合适,那么这个问题需要澄清。 – 2011-05-02 01:42:19