gpt4 book ai didi

c - 使用指针更改函数中数组值的问题

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

我正在尝试编写代码来提示用户输入字符串,然后打印该字符串。然后它将使用“初始化”函数将数组中的每个值更改为“a”,但最后一个值除外,最后一个值将更改为“\0”。然后调用函数将打印更新后的字符串。

这是我的代码:

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

void initialize(char (*firstString)[50]);

void main(void)
{
char firstString[50];

printf("Enter a string: ");
scanf("%s", firstString);
printf("%s", firstString);
initialize(&firstString);
printf("%s", firstString);
}

void
initialize(char (*firstString)[50])
{
int i;
for (i = 0; i < 50; i++) {
*firstString[i] = 'a';
*firstString[49] = '\0';
}
}

感谢任何帮助。

编辑:

这是工作代码。感谢您的帮助!

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

void initialize(char firstString[50]);

void main(void)
{
char firstString[50];

printf("Enter a string: ");
scanf("%s", firstString);
printf("%s", firstString);
initialize(firstString);
printf("%s", firstString);
}

void
initialize(char firstString[50])
{
int i;
for (i = 0; i < 50; i++)
memset(firstString, 'a', 49);
firstString[49] = '\0';
}

最佳答案

[] 的优先级高于 * 因此 *firstString[x] 被解析为 *(firstString[x]) 。参见 C Operator Precedence .

因此您需要编写(*firstString)[x] 以获得正确的优先级。

此外,您的函数可以简单地写成:

void
initialize(char (*firstString)[50])
{
memset(firstString, 'a', 49);
(*firstString)[49] = '\0';
}

关于c - 使用指针更改函数中数组值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36840350/

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