2015-11-19 3 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_inv работает отлично время в main() функции, но не в отдельных функция.

В чем проблема с функцией?

+0

1) выделить пространство для нулевого терминатора 2) добавить инструкцию печати 3) пересечь половину строки –

ответ

2

char *s[] представляет собой массив указателей на char

char s[] является массивом char

изменить функцию на

void str_inv(char s[]) 

В качестве примечания. gets() устарел, пожалуйста, не используйте его. Вместо этого используйте fgets().

Смежные вопросы