2015-11-19 107 views
-2

這裏有一個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_invmain()功能正常工作一段時間,但不是在單獨的功能。

函數有什麼問題?

+0

1)爲空終止符分配空間2)添加打印語句3)遍歷字符串的一半 –

回答

2

char *s[]是指針的數組char

char s[]char

改變功能的陣列以

void str_inv(char s[]) 

作爲附帶說明。 gets()已棄用,請勿使用它。改爲使用fgets()