gpt4 book ai didi

c - 使用指针从二维字符数组打印字符串

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:54 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <string.h>

int text(char*);

int main()
{
char n[5][100] = {'c'};

char (*p)[100] = n;

text(*p);

return 0;
}

int text(char *p)
{
for(int i = 0; i<5; i++)
{
scanf("%s", p+i);
}

printf("%s", (p+2));

return 0;
}

所以我必须使用二维字符数组的指针打印一个完整的字符串。我声明了一个二维数组,并声明了指向它的二维指针。然后我将它传递给功能测试。

当我打印 (p+2) 时,我希望它打印第 3 行。但它所做的是打印从第 3 行到最后一行的每一行的第一个字符,以及整个最后一行。

错在哪里?

最佳答案

您的函数只需要一个指向 char 的指针:char *。将参数传递给您的函数时,您取消引用您的二维数组:

text(*p);

这意味着您只传递第一个元素(在本例中是第一行)。

由于 p 是指向单个 char 的指针,因此 p+2 将只是第三个字符。

您需要做的是使用正确的类型:

int text(char (*p)[100]);

调用它

text(p); // <- no dereference!

然后,在您的函数中,您将编写例如

printf("%s", p[2]);

或者如果你更喜欢指针算法的语法,这将是

printf("%s", *(p+2));

关于c - 使用指针从二维字符数组打印字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47416593/

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