【发布时间】:2014-03-05 16:00:06
【问题描述】:
我想反转一个字符串,所以我写了以下内容:
#include<stdio.h>
#include<conio.h>
#include<string.h>
char *inverseString(char *s);
char *inverseString(char *s)
{
char *s1;
int i = 0;
s1 = (char*)malloc (strlen(s)+1);
int j= strlen(s)-1;
for (; j>=0; j--) // dont know why for(; j> 0; j--) not work
{
s1[j] = s[i];
i++;
}
return s1;
}
void main(void)
{
char string[30];
printf("string: ");
gets(string);
printf("inverse string is : %s",inverseString(string));
getch();
}
但结果最后有一个奇怪的字符。
我该如何解决?
谢谢
【问题讨论】:
-
请永远不要使用
gets(),即使在玩具程序中也不行。它不再在标准 C 中,因为它不能安全地使用——也就是说,如果程序使用gets(),它就无法保护自己免受恶意攻击。使用fgets()并记住删除换行符。