基本上我想要反转一个单词(一个单词,而不是一个有多个单词的字符串)我已经成功地用这个
反转了这个单词{
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);