我目前对执行基本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
**你
** o
** j
**
** o
** b
。
onjour< - 这是我不明白的。
感谢您的帮助,非常感谢。
答案 0 :(得分:2)
反向打印字符串的代码不会将结果存储在答案中。您需要首先将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);
答案 1 :(得分:-1)
reversed = &sentence[index];
我认为那是错的。
reversed = sentence[index];
是对的。无论如何,代码到处乱七八糟。