2012-12-10 44 views
0

可能重复:
Reversing a string in CC函数来扭转字符数组字符串

我目前正在从C++转向C编程的一个项目,我没有做太多与字符数组作为字符串。我需要一个函数,它会读入一个指向char数组的指针并将其反转。我用C++写了这个,使用字符串函数很容易,但是我对C是否有函数或其他东西是最好的方法是困惑的。谢谢,我不一定要找人完成代码,而是指向正确的方向。如果简单,一行东西没有任何问题,但不要做任何让你感到不舒服的事情。

#include<stdio.h> 
#include<string.h> 

void reverseString(char *myString) 
{ 
    //reverse string here 
} 

int main(void) 
{ 
    char myString[] = "This is my string!"; 
    reverseString(myString); 

    return 0; 
} 

回答

2

最简单的方法:循环通过炭字符串炭和每个字符插入到以相反的顺序另一个字符数组。

或者试试这个: 2)

void reverse_string(char str[]) 
{ 
    char c; 
    char *p, *q; 

    p = str; 
    if (!p) 
     return; 

    q = p + 1; 
    if (*q == '\0') 
     return; 

    c = *p; 
    reverse_string(q); 

    while (*q != '\0') { 
     *p = *q; 
     p++; 
     q++; 
    } 
    *p = c; 

    return; 
} 

3)

if(strlen(str) > 0) { 
    char* first = &str[ 0 ]; 
    char* last = &str[ strlen(str) - 1 ]; 
    while(first < last) { 
     char tmp = *first; 
     *first = *last; 
     *last = tmp; 
     ++first; 
     --last; 

4)

char* strrev(char* s) 
    { 
    char c; 
    char* s0 = s - 1; 
    char* s1 = s; 

    /* Find the end of the string */ 
    while (*s1) ++s1; 

    /* Reverse it */ 
    while (s1-- > ++s0) 
    { 
    c = *s0; 
    *s0 = *s1; 
    *s1 = c; 
    } 

    return s; 
    } 
+1

为什么downvote? – irrelephant

+1

这绝不是实现此目的的最佳方式。另外恕我直言,提问者应该重定向到确切的重复。 -1 – axiom

+2

@axiom“应该重定向”并不是一个足够理由来降低有效答案,也不是这样做的最佳方式。如果你总是期望每个人都以最好的方式做所有事情,那么你可以做到这一点,但只有当你是一个完美的程序员时(我严重怀疑)。 – 2012-12-10 05:54:50