2013-05-09 2 views
0

저는 C를 처음 사용하고 문자열을 검사하고 마지막 문자를 반환하는 함수를 만들려고합니다.마지막 문자 찾기

나는 함수가 원하는 문자를 인쇄 할 수 있지만, 나는 그것을 반환하는 방법을 알아낼 질수 :/

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

char last_chr(char *c); 

int main (int argc, const char * argv[]) { 
    char *text[15]; 
    strcpy(text, "*find:last;char#"); 

    last_chr(text); //debugging 

    //printf("last char: %c", last_chr(text)); //not working 

    return 0; 
} 

char last_chr(char *c) { 
    char *endchr; 
    char result; 
    int pos = strlen(c)-1; 

    endchr = c[pos]; 

    //sprintf(result,"%s",endchr);  //"EXEC_BAD_ACCESS" 
    putchar(endchr);     //prints # 
    //putc(endchr, result);    //"EXEC_BAD_ACCESS" 
    //printf(endchr);     //"EXEC_BAD_ACCESS" 
    return result; 
} 
+2

'endchr = c [pos];도 오류가 있습니까? – Kninnug

+0

"캐스팅없이 정수에서 포인터를 지정하면 포인터가 포인터가됩니다" – JoakimH

+1

결코 경고를 무시하지 마십시오. 당신에게 정말 좋은 이유가 없다면 말이지. 그리고 나서조차 그것을 고쳐라. 이 경고는 특히 포인터를 망칠 때 무시하는 것이 매우 위험합니다. 랜덤 데이터를 가리키게합니다. 힌트 : GCC를 사용한다면'-Wall -pedantic'으로 컴파일하십시오. – Kninnug

답변

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

char last_chr(char *c); 

int main (int argc, const char * argv[]) { 
    char text[32];//char *text[15] 

    strcpy(text, "*find:last;char#");//length is 17 

    printf("last char: %c", last_chr(text));//# 

    return 0; 
} 

char last_chr(char *c) { 
    if(c == NULL || *c == '\0') return 0; 
    return c[strlen(c)-1]; 
} 
1

당신은 result을 할당하지 않습니다. 당신은 아마 대신 문자의 문자 포인터를

result = c[pos]; 

대신

endchrendchr = c[pos];

을 의미.