我收到以下代码的错误,我无法弄明白。
char name[]="tolgahan"
char result[100]="";
strncat(result,name[1],1);
我想,我需要将名称[1]转换为字符串格式,但我现在不知道如何做到这一点。
请帮帮我。 最好的问候。
答案 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
中拥有字符串的实际长度,并且我避免了调用,编译器甚至可以在内部重新排列内容以减少内存操作。