C中的反向字符串函数?
Reverse string function in C?
这是我尝试测试的 C 源代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
char c[81];
gets(c);
str_inv(c);
puts(c);
}
void str_inv(char *s[])
{
int i, j;
char *temp;
temp=calloc(1 ,strlen(s)*sizeof(char));
if(temp==NULL)
{
fprintf(stderr, "Error: Memory not allocated.");
exit(1);
}
for(i=0, j=strlen(s)-1; i<strlen(s); i++, j--)
{
temp[i]=s[j];
}
for(i=0; i<strlen(s); i++)
{
s[i]=temp[i];
}
free(temp);
}
程序的输出如下所示:
**abc**
**Process returned 0 (0x0) execution time : 2.262 s**
**Press any key to continue.**
函数 str_inv
中的代码在 main()
函数中工作正常,但在单独的函数中却不行。
功能有什么问题?
char *s[]
是指向 char
的指针数组
char s[]
是 char
的数组
将函数更改为
void str_inv(char s[])
作为旁注。 gets()
已弃用,请勿使用。请改用 fgets()
。
这是我尝试测试的 C 源代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
char c[81];
gets(c);
str_inv(c);
puts(c);
}
void str_inv(char *s[])
{
int i, j;
char *temp;
temp=calloc(1 ,strlen(s)*sizeof(char));
if(temp==NULL)
{
fprintf(stderr, "Error: Memory not allocated.");
exit(1);
}
for(i=0, j=strlen(s)-1; i<strlen(s); i++, j--)
{
temp[i]=s[j];
}
for(i=0; i<strlen(s); i++)
{
s[i]=temp[i];
}
free(temp);
}
程序的输出如下所示:
**abc**
**Process returned 0 (0x0) execution time : 2.262 s**
**Press any key to continue.**
函数 str_inv
中的代码在 main()
函数中工作正常,但在单独的函数中却不行。
功能有什么问题?
char *s[]
是指向 char
char s[]
是 char
将函数更改为
void str_inv(char s[])
作为旁注。 gets()
已弃用,请勿使用。请改用 fgets()
。