在C中使用带有char数组元素的strncat

时间:2010-05-15 11:49:22

标签: c string char character

我收到以下代码的错误,我无法弄明白。

   char name[]="tolgahan"
   char result[100]="";
   strncat(result,name[1],1);

我想,我需要将名称[1]转换为字符串格式,但我现在不知道如何做到这一点。

请帮帮我。 最好的问候。

3 个答案:

答案 0 :(得分:2)

尝试:

strncat(result, & name[1],1);

strncat(result, name + 1,1);

说明:C中的字符串只是字符序列中第一个字符的地址(在内存中)。因此,如果您使用指针(使用&运算符或通过向初始指针添加1),您将获得从初始字符串的第2个字符开始的字符串。

答案 1 :(得分:2)

表达式

name[1] 

是一个字符 - 你想要一个指针:

strncat(result,name + 1,1);

答案 2 :(得分:0)

但是使用strncat作为1个字符的副本是矫枉过正而且不是很聪明。

在你的情况下,我会做更像这样的事情

 char name[]="tolgahan";
 char result[100]= "";
 size_t l = 0;
 result[l++] = name[1];

通过跟踪我的第一个字符串的长度,我可以避免隐藏的strlen调用(这是strncat在内部执行的操作。)

 result[l++] = 'H';
 result[l++] = 'e';
 result[l++] = 'l';
 result[l++] = 'l';
 result[l++] = 'o';
 result[l++] = 0;

我仍然在l中拥有字符串的实际长度,并且我避免了调用,编译器甚至可以在内部重新排列内容以减少内存操作。