我试图连接两个字符,并在返回的上一行出现分段错误。
当我使用char而不是char*时,(onechar-a+'a')工作了,尽管我没有尝试连接。如果我把这个作为char而不是char*我会得到关于casting的警告。
char *carat;
carat = test_carat(ttyinfo.c_cc[VINTR]);
carat = test_carat(ttyinfo.c_cc[VINTR]);
char * test_carat(char onechar)
{
if (onechar >= 32 || onechar !=127)
{
if (iscntrl(onechar))
{
char * returnString = strcat((char*)'^', (char*)(onechar - 1 + 'A'));
return returnString;
}
}
}
最佳答案
那是行不通的:
strcat((char*)'^', (char*)(onechar - 1 + 'A') )
不应该将字符强制转换为字符指针。其结果是字符值(值你可以这样做:
char * test_carat(char onechar)
{
if (onechar >= 32 || onechar !=127)
{
if (iscntrl(onechar))
{
char * returnString = (char *)malloc(3);
returnString[0] = '^';
returnString[1] = (onechar - 1 + 'A');
returnString[2] = '\0';
return returnString;
}
}
return NULL;
}