void LCD_DisString(int x, int y, char *pStr) { char GB_Str[128]; int outlen; memset(GB_Str,0,sizeof(GB_Str)); int inlen = strlen(pStr); if ((inlen <= 0) || (inlen > 240)) return; utf8ToGbk(pStr,inlen,GB_Str,&outlen); Lcd_DispStringOrgin(x,y,0,GB_Str); } void displayString(int isDraw, float val,const char* stringArray[], int x, int y) { (isDraw ? LCD_DisString_Not(x, y, (char *)stringArray[(int)val]) : LCD_DisString(x, y,(char *) stringArray[(int)val])); } const char gcszOnOff[][NEW_DEF_LEN] = {// 投入退出 { "退出" }, { "投入" } }; displayString(0, 1, (const char **)gcszOnOff, (i % 9) + 1, 20); 这段运行卡死,该怎么修改
时间: 2024-04-27 12:24:57 浏览: 68
首先,需要了解运行卡死的原因。可能是由于某些参数传递错误导致的,也有可能是在`utf8ToGbk`函数中出现了问题。
为了找到问题,可以加入一些调试信息,比如在`utf8ToGbk`函数内部打印一些调试信息,或者检查传递给`utf8ToGbk`函数的参数是否正确。
同时,也可以检查一下`LCD_DisString_Not`和`LCD_DisString`这两个函数的实现是否正确,以及调用它们的参数是否正确。
最后,如果还是无法解决问题,可以考虑使用调试工具来调试程序,以确定出现问题的具体位置。
相关问题
void LCD_DisString(int x, int y, char pStr) { char GB_Str[128]; int outlen; memset(GB_Str,0,sizeof(GB_Str)); int inlen = strlen(pStr); if ((inlen <= 0) || (inlen > 240)) return; utf8ToGbk(pStr,inlen,GB_Str,&outlen); Lcd_DispStringOrgin(x,y,0,GB_Str); } void displayString(int isDraw, float val,const char stringArray[], int x, int y) { (isDraw ? LCD_DisString_Not(x, y, (char *)stringArray[(int)val]) : LCD_DisString(x, y,(char *) stringArray[(int)val])); } const char gcszOnOff[][NEW_DEF_LEN] = {// 投入退出 { "退出" }, { "投入" } }; displayString(0, 1, (const char **)gcszOnOff, (i % 9) + 1, 20); 这段运行卡死,该怎么修改
这段代码有几个问题:
1. `LCD_DisString`函数的第三个参数应该是`char*`类型,而不是`char`类型。
2. 在`LCD_DisString`函数中,`pStr`参数应该是指针类型,而不是字符类型。需要在函数声明和定义中将其修改为`char* pStr`。
3. 在`displayString`函数中,`stringArray`参数应该是`const char* const*`类型,而不是`const char*`类型。可以将函数定义中的`const char stringArray[]`修改为`const char* const* stringArray`。
4. 在调用`displayString`函数时,第三个参数的类型应该是`const char* const*`,而不是`(const char **)`。可以将调用中的`(const char **)gcszOnOff`修改为`(const char* const*)gcszOnOff`。
修改后的代码如下:
```
void LCD_DisString(int x, int y, char* pStr) {
char GB_Str[128];
int outlen;
memset(GB_Str, 0, sizeof(GB_Str));
int inlen = strlen(pStr);
if ((inlen <= 0) || (inlen > 240)) return;
utf8ToGbk(pStr, inlen, GB_Str, &outlen);
Lcd_DispStringOrgin(x, y, 0, GB_Str);
}
void displayString(int isDraw, float val, const char* const* stringArray, int x, int y) {
(isDraw ? LCD_DisString_Not(x, y, (char*)stringArray[(int)val]) : LCD_DisString(x, y, (char*)stringArray[(int)val]));
}
const char gcszOnOff[][NEW_DEF_LEN] = {// 投入退出
{ "退出" },
{ "投入" }
};
displayString(0, 1, (const char* const*)gcszOnOff, (i % 9) + 1, 20);
```
int split_sort(char *str,char **pStr)的代码是什么
这是一个函数的声明,它声明了一个名为`split_sort`的函数,接受两个参数:一个指向`char`类型的指针`str`和一个指向指针的指针`pStr`,并且没有返回值。这个函数的作用是将`str`中的单词按字典序排序,并将排序后的单词存储在`pStr`所指向的指针数组中。但是,由于函数体并没有给出,无法提供更详细的信息。
阅读全文