C 查找最后一个字符

C 查找最后一个字符,c,char,C,Char,我是C新手,尝试创建一个检查字符串并返回最后一个字符的函数 #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(

我是C新手,尝试创建一个检查字符串并返回最后一个字符的函数

#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];
}
我获得了打印正确字母的功能,但我不知道如何返回:/

#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;
}
#包括
#包括
#包括
char last_chr(char*c);
int main(int argc,const char*argv[]{
字符*文本[15];
strcpy(文本,“*find:last;char#”);
last_chr(text);//调试
//printf(“最后一个字符:%c”,最后一个字符(文本));//不工作
返回0;
}
char last_chr(char*c){
char*endchr;
字符结果;
int pos=strlen(c)-1;
endchr=c[pos];
//sprintf(结果,“%s”,endchr);/“执行错误访问”
putchar(endchr);//打印#
//putc(endchr,result);/“执行错误访问”
//printf(endchr);/“执行错误访问”
返回结果;
}

您不分配
结果
。你可能是说

result = c[pos];
而不是
endchr=c[pos]

endchr
是字符指针而不是字符。

\include
#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];
}
#包括 char last_chr(char*c); int main(int argc,const char*argv[]{ 字符文本[32];//字符*文本[15] strcpy(文本“*find:last;char#”);//长度为17 printf(“最后一个字符:%c”,最后一个字符(文本))//# 返回0; } char last_chr(char*c){ 如果(c==NULL | |*c=='\0')返回0; 返回c[strlen(c)-1]; }
不是
endchr=c[pos]也给你一个错误?这只给了我一个警告:“赋值使指针从整数变为无强制转换”永远不要忽略警告。除非你有很好的理由。即使这样,也要修复它。当您弄乱指针时,忽略此警告尤其危险。让它指向随机数据。提示:如果您使用的是GCC,请使用
-Wall-pedantic
编译。