2013-05-09 83 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 2013-05-09 22:26:25

+0

,只給了我一個警告:「賦值使整型指針沒有投射」 – JoakimH 2013-05-09 22:41:59

+1

永遠不會忽略警告。除非你有一個很好的理由。即使如此,修復它。這個警告特別是在您弄亂指針時忽略的非常危險。使其指向隨機數據。提示:如果您使用GCC,請使用'-Wall -pedantic'進行編譯。 – Kninnug 2013-05-09 22:45:53

回答

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]; 

,而不是endchr = c[pos];

endchr是一個字符指針,而不是一個字符。

相關問題