【问题标题】:Finding last character寻找最后一个字符
【发布时间】:2013-05-09 22:24:28
【问题描述】:

我是 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;
}

【问题讨论】:

  • endchr = c[pos]; 不是也给你一个错误吗?
  • 这只会给我一个警告:“赋值使指针从整数不进行强制转换”
  • 永远不要忽略警告。除非你有一个非常好的理由。即使这样,也要修复它。当您弄乱指针时,忽略此警告尤其危险。使其指向随机数据。提示:如果您使用 GCC,请使用 -Wall -pedantic 编译。

标签: c char


【解决方案1】:

您没有分配result。你可能是说

result = c[pos];

而不是endchr = c[pos];

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

【讨论】:

    【解决方案2】:
    #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];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多