在C中反转一个单词,然后将反转的单词存储在printf中使用



基本上我想要反转一个单词(一个单词,而不是一个有多个单词的字符串)我已经成功地用这个

反转了这个单词
{
int end, x;
end = strlen(myString) - 1;
for (x = end; x >= 0; --x) {
printf("%c", myString[x]);
}
}

(myString在代码的其他地方定义)

,但意外的是,我需要打印相反的词是这样的:

printf("The word reversed is '%c'", myString);

我不知道如何将for循环反转的单词放入第二个printf命令中。什么好主意吗?

给你。

for ( size_t i = 0, n = strlen( myString ); i < n / 2; i++ )
{
char c = myString[i];
myString[i] = myString[n - i - 1];
myString[n - i - 1] = c;
}
printf("The word reversed is '%s'n", myString);

如果传递给您的字符串是字面量而不是已分配的指针,则需要将该字符串反向复制到已分配的缓冲区中。如果您试图避免损坏原始字符串,则同样适用。

// allocate a buffer big enough to hold a copy of the string
int len = strlen(myString);
char* reverse = malloc(len+1);
// reverse copy it over.
for (size_t i = 0; i < len; i++)
{
reverse[i] = myString[len-1-i];
}
reverse[len] = ''; // null terminate our new string
printf("Reversed word: %sn", reverse);
// free the string when you are done with it
free(reverse);

相关内容

最新更新