【发布时间】:2009-07-03 18:44:59
【问题描述】:
我刚刚编写了一个程序,它可以反转用户给出的任何句子。例如:如果用户输入“你好吗”,我的程序会生成“uoy era woH”。
我编写的程序如下所示。我只是有一种疯狂的直觉,认为可以有比这更智能的程序。非常感谢您提供的宝贵意见,或者任何比这更好的程序也很受欢迎。
int ReverseString(char *);
main() {
char *Str;
printf("enter any string\n");
gets(Str);
ReverseString(Str);
getch();
}
int ReverseString(char *rev) {
int len = 0;
char p;
while(*rev!='\0') {
len++;
rev++;
}
rev--;
while(len>0) {
p = *rev;
putchar(p);
rev--;
len--;
}
}
非常感谢。
【问题讨论】:
-
你能说得清楚一点吗??
-
@GNR 你在学习哪本 C 教科书?学习如何将字符串读入缓冲区应该是一本好教科书教给你的第一件事。
-
不要执行 "printf("enter any string\n");",因为这可能会在格式字符串攻击中被利用。
-
如果我们通过gets或scanf来做会有什么不同?我们应该检查缓冲区溢出吗?如果我们分配一些80字节的缓冲区说..但我们只是输入字符串20个字节,但是整个60个字节就这样浪费了。你能证明这一点吗
-
@John Kugelman:我的立场是正确的,对不起