gpt4 book ai didi

c - 最后一个难题是在 C 中更改此函数

转载 作者:行者123 更新时间:2023-11-30 18:37:40 25 4
gpt4 key购买 nike

我必须使用指针而不是 int i 来更改此函数,但我遇到了问题,因为我的直觉告诉我要使用 char 指针,并且每次都会增加指向下一个字符串的指针,但我不知道如何实现。

这是我到目前为止所拥有的:

populate_demo()

{
int i;
for (i=0; evalue[i][0] ; i++)
env_add("DEMO",evalue[i]);
}

我当然一直在尝试,这并不是说我没有尝试过,但我似乎无法完成我需要的东西,这是我的代码

int main()
{
char array1[4][6]={"one","two","three","four"};
char *p;
p=array1[0];
*p++;
printf("%s",p);
return 0;
}

预期结果:printf 打印“two”。而是转到第一个字符串的下一个字符并打印 ne 直到找到 \0。所以我的问题是如何转到下一个字符串?

最佳答案

如果你有一个像这样的数组

char array1[4][6]={"one","two","three","four"};

那么指向其第一个元素的指针将如下所示

char ( *p )[6] = array1;  

因此你可以这样写

printf( "%s", *p );

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

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

这是一个演示程序

#include <stdio.h>

#define N 6

void populate_demo( char evalue[][N] )
{
for ( ; ( *evalue )[0]; ++evalue ) puts( *evalue );
}

int main( void )
{
char array1[][N] = { "one", "two", "three", "four", "" };

populate_demo( array1 );

return 0;
}

程序输出为

one
two
three
four

如果数组不包含空字符串,那么上面的程序可以如下所示

#include <stdio.h>

#define N 6

void populate_demo( char evalue[][N], size_t n )
{
for ( char ( *p )[N] = evalue; p != evalue + n; ++p ) puts( *p );
}

int main( void )
{
char array1[][N] = { "one", "two", "three", "four" };

populate_demo( array1, sizeof( array1 ) / sizeof( *array1 ) );

return 0;
}

程序输出将是相同的。

如果编译器支持可变大小数组,您也可以将它们用作函数参数。

关于c - 最后一个难题是在 C 中更改此函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36197224/

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