c 复制 ptr 的第一个字母

标签 c pointers

我不知道下面的代码有什么问题。我仔细阅读了 stackoverflow,但没有找到太多帮助。

char * abbreviate_name( const char * full_name) {

int length = strlen(full_name) + 1;
char * final = malloc(length);
*answer = '\0';
char ptr[51];

// above is where I declare all my variables
strncpy(ptr, full_name, length); // copy full_name because it is a const

// ...

final = &ptr[1]; // this line copies all of ptr when I do a prinf on it

我只是想知道如何获取 ptr 的第一个字母。 我尝试使用 ptrs 和地址,但无法正常工作。

最佳答案

要获取指针的第一个字符,您可以使用 *ptrptr[0]

但是您的代码还有其他问题,分配给 final 不会复制,它只是将 final 指向另一个位置,在这种情况下,您将指向一个堆栈变量,它会严重失败。

相反,只需将 strcpy 放入 final 并去掉“ptr”

关于c 复制 ptr 的第一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32533952/

相关文章:

c - 为什么没有正确解释文件结束字符?

c - 遗传算法使用哪种编码?

c - 理解 C 指针

objective-c - 从 ObjC 获取 UnsafeBufferPointer

使用函数更改指针包含的地址

c - 有没有办法强制将变量存储在 C 的缓存中?

c - 如何从外部 c 文件的函数返回 *uint8_t(数组)到 main.c

c++ - 在 qsort() 中类型转换

c - 在指针 C 中保存多个字符(动态内存)

c++ - 使用指针算法计算类型大小的替代方法