嵌入式软件工程师面试题--字符串的反转

来源:互联网 发布:unity3d有手机版吗 编辑:程序博客网 时间:2024/05/02 01:21

面试笔试题总会遇到字符串反转的问题,网上的实现方式也很多。下面的实现是用C语言实现的。

自己手敲,亲自测试通过;做下记录。直接上代码:

#include <stdio.h>                                                                                                                             #include <string.h>#define SIZE 1024char *rev_str(char *str, int len);int main(int argc, char * argv[]){    char myStr[SIZE];    int len = 0;    printf("Please input a string!\n");//  gets(myStr);    scanf("%s", myStr);    len = strlen(myStr);    rev_str(myStr, len);    printf("After the inverted string is %s!\n", myStr);    return 0;}char *rev_str(char *str, int len){    char *start = str;    char *end = str + len -1;    char ch = '\0';    if(NULL == str)    {        printf("The param is invalid\n");        return NULL;    }    while(start < end)    {        ch = *start;        *start++ = *end;        *end-- = ch;    }    return str;}              


上面是一种方法,下面是灵一种实现方式:(希望大家亲手敲一下)

#include <stdio.h>#include <string.h>                                                                                                                            #define SIZE 1024char * myStrRev(char * const dest, const char * const src);int main(int argc, char * argv[]){    char mysrc[SIZE];    char mydest[SIZE];    printf("请输入一个字符串:\n");    scanf("%s", mysrc);    myStrRev(mydest, mysrc);    printf("After the inverted string is %s\n", mydest);    return 0;}char * myStrRev(char * const dest, const char * const src){    int i = 0;    int srclen = strlen(src);    char * addr = dest;    if(NULL == dest || NULL == src)    {        printf("The parame is invalid!!\n");        return NULL;    }    for(i = 0; i < srclen; i++)    {        *(dest + i) = *(src + srclen -i -1);    }    dest[srclen] = '\0';    return addr;}                            


有什么不对的地方和更好的方法,请留言。谢谢。



0 0