gpt4 book ai didi

Char 指针值在循环中发生变化,但之后不会发生变化

转载 作者:行者123 更新时间:2023-11-30 15:04:58 25 4
gpt4 key购买 nike

我目前对反转字符串的基本 C 程序的执行感到困惑。我使用指针。请记住,我的程序绝对不是最有效的,我只是想尝试指针。我遇到的问题如下:

// initialize variables
char *sentence = malloc(256);
char *answer = malloc(256);

// ask user for input
printf("please enter sentence\n");
scanf("%s", sentence);

// loop to reverse the "sentence" string
for (int index = count; index >=0; index--) // count has been determined as the length of the string "sentence" previously
{
reversed = &sentence[index]; // pointer reversed points to last location of pointer sentence
printf("\n ** %c", *reversed);
reversed++; // incremend reversed by 1
}
printf("\n%s", reversed); // prints the cahr pointer reversed as string

Console result如果无法打开图像,我得到的是循环中 printf 中以相反顺序打印的所有字符。然而最终的 printf 给出了一个奇怪的结果:(如果我的句子是 bonjour)\n** r** 你** 哦** j** n** 哦** b.
onjour <-- 这是我不明白的。

感谢您的帮助,非常感谢。

最佳答案

反向逐个字符打印字符串的代码不会将结果存储在答案中。您需要首先将 reversed 指向 answer,然后在循环过程中向其中添加字符:

char *reversed = answer;
for (int index = count; index >=0; index--) {
*reversed = sentence[index];
printf("\n ** %c", *reversed);
reversed++;
}
*reversed = '\0';
printf("\n%s", answer);

关于Char 指针值在循环中发生变化,但之后不会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40059741/

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