c - 返回的字符未显示

标签 c

我正在尝试使用“char getlastc(char*)”函数返回传递数组的最后一个字符,但它没有显示在 main 中(它什么都不显示),虽然我尝试了很多次寻找错误但是可以未找到。请指出问题所在。

#include <stdio.h>

char getlastc(char* array) {
   char c;
   while(c = *array) {
      if(*array++ == '\0') {
          return  c;
      }
   }

}


int main() {
    char array[50] = "Hello World";
    char *array1 = "Hello World";
    printf("%c %c", getlastc(array), getlastc(array1));
    return 0;
}

最佳答案

*array++ 返回的字符将与分配给 c 的字符相同。这是因为我们正在取消引用 array++ 返回的指针,这是 array 递增之前 的值。

此外,如果输入的是空字符串,您的函数将不返回任何内容。

使用预增量和一点点混洗,我们可以很好地解决这个问题:

   char c;
   while(c = *array) {
      if(*++array == '\0') {
        break;
      }
   }
   return c;

现在我们将返回输入字符串的最后一个字符,或者 '\0' 如果我们传递的是空字符串。

作为旁注,您可能想在 printf() 中添加一个换行符。

关于c - 返回的字符未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49660244/

相关文章:

c - 按位运算实现逻辑右移

c - 函数内部的指针变量指向栈还是堆?

无法通过 system() 从程序中设置 "echo"文件

c++ - 使用 malloc 安全吗?

c - 如何通过linux内核中的c指针覆盖x86 `movq`指令的操作数值

c - 在 Windows 上使用 Visual Studio Code 调试 C

c - Lua C 函数调用返回 nil

C: 如何将字符串存储到 “char *myArray[100]” 数组中?

c++ - Vista 窗口标题中的图片(标识)

c - 使用clone()和printf的段错误