我正在尝试使用“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/