c - 从指针数组返回字符串的函数

标签 c arrays string function pointers

我需要声明一个从指针数组返回字符串的函数..我正在对PIC进行编程,并且我正在使用LCD作为接口(interface).. 有了这段代码,我就得到了我想要的:

// CONFIGURATION BITS
#pragma config FOSC = HS   // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF  // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF   // Low-Voltage In-Circuit Serial Programming Enable bit
#pragma config CPD = OFF   // Data EEPROM Memory Code Protection bit 
#pragma config WRT = OFF   // Flash Program Memory Write Enable bits 
#pragma config CP = OFF    // Flash Program Memory Code Protection bit

#define _XTAL_FREQ 8000000

// DEFINING LCD PINS
#define RS RD2
#define EN RD3
#define D4 RD4
#define D5 RD5
#define D6 RD6
#define D7 RD7

#include <xc.h>

#include "lcd.h"

#include <stdio.h>
#include <stdlib.h>

void main()
{

    TRISD = 0x00;           //PORTD as output for LCD
    Lcd_Init();
    Lcd_Clear();

    while(1)
    {

        Lcd_Set_Cursor(1,1);

        char *keypress;
        int key = 2;
        char *key2[] = {"3", "4", "5"}; 
        keypress = key2[key];

        Lcd_Write_String(keypress);

        __delay_ms(50);

    }
}

enter image description here

我得到“5”..这就是我想要的..但​​是当我尝试为此创建一个函数时..

// CONFIGURATION BITS
#pragma config FOSC = HS   // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF  // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF   // Low-Voltage In-Circuit Serial Programming Enable bit
#pragma config CPD = OFF   // Data EEPROM Memory Code Protection bit 
#pragma config WRT = OFF   // Flash Program Memory Write Enable bits 
#pragma config CP = OFF    // Flash Program Memory Code Protection bit

#define _XTAL_FREQ 8000000

// DEFINING LCD PINS
#define RS RD2
#define EN RD3
#define D4 RD4
#define D5 RD5
#define D6 RD6
#define D7 RD7

#include <xc.h>

#include "lcd.h"

#include <stdio.h>
#include <stdlib.h>

char kbd_getc();

char kbd_getc(){

    int key = 2;
    char *key2[] = {"3", "4", "5"}; 
    return key2[key];

}

void main()
{

    TRISD = 0x00;           //PORTD as output for LCD
    Lcd_Init();
    Lcd_Clear();

    while(1)
    {

        Lcd_Set_Cursor(1,1);

        char *keypress;

        keypress = kbd_getc();

        Lcd_Write_String(keypress);

        __delay_ms(50);

    }
}

enter image description here

我不明白为什么我会得到 mm ..我不确定我是否错误地声明了函数或者我对指针做了错误的操作,谢谢

最佳答案

你的函数返回char,但你返回一个char *

将返回类型更改为char *

并提高编译器警告以捕获这些内容。

关于c - 从指针数组返回字符串的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51183866/

相关文章:

c - 如何在数组中存储一条记录?

C:如何正确访问通过引用传递的结构体的数组元素?

javascript - 使用 JSON 将行传送到 JavaScript

ruby-on-rails - 在 Ruby 中将字符串从 snake_case 转换为 CamelCase

c++ - 原子操作需要硬件支持吗?

c - 使用 write 递归打印数字 c

ios - Swift Struct 与 Class : what is the allowed stack size? 并将类重构为结构

c# - 你如何遍历多维数组?

regex - 在 PHP 中使用正则表达式返回字符串的一部分

python - python中字符串的上下文相关拆分