gpt4 book ai didi

c 字符串数组中的指针

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:10 27 4
gpt4 key购买 nike

我正在尝试使用指针算法将一个 char 数组复制到另一个 char 数组。它在 copy() 中似乎是正确的,但后来我不明白它进入 main 后会发生什么。即使我调用了函数,char a[] 也得不到 char b[] 的值。我错过了什么吗?呵呵

    #include <stdio.h>

void copy(char a[], char b[]){
int *apoint = &a;
printf("%d\n", apoint);
printf("%d\n", &a);
*apoint = b;
printf("%d\n", *apoint);
printf("%s\n", a);
printf("%s\n", b);
}

int main(void){
char a[100];
char b[] = "bluhbluh";

copy(a,b);
printf("%d\n", a);
}

最佳答案

这真的不是很有意义的 C。我怀疑它甚至没有在没有警告的情况下编译?

首先获取数组 a 的地址,然后获取数组 b 的地址,将其转换为整数(无需转换!),然后写入将该整数放入数组 a 中。然后,在 main 的末尾,您尝试将 char 数组打印为整数。

指针算法并不是那样工作的。 :)

我认为你真的想做这样的事情:

void copy(char a[], char b[]){
char *ptr_a = a;
char *ptr_b = b;

while (*ptr_b != '\0') {
*ptr_a = *ptr_b;
ptr_a++;
ptr_b++;
}
*ptr_a = '\0';
}

int main(void){
char a[100];
char b[] = "bluhbluh";

copy(a,b);
printf("%s\n", a);
}

当然,正确的做法是这样的:

#include <string.h>

int main(void){
char a[100];
char b[] = "bluhbluh";

strncpy(a, b, 100);
printf("%s\n", a);
}

关于c 字符串数组中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13377548/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com