【发布时间】:2012-03-10 20:13:33
【问题描述】:
我正在尝试连接两个字符并在返回上方的行上得到分段错误。 当我使用 char 而不是 char* 时,(onechar-a + 'A') 起作用了,尽管我没有尝试连接。如果我将其保留为 char 而不是 char* 我会收到有关强制转换的警告。
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*)'^',您不能将 int 文字转换为 char 指针(并附加到它...)if (onechar >= 32 || onechar !=127) {看起来也很错误。 -
也许
(char*)'^'不是一个好主意。 C 中的字符串非常非常复杂,在使用 C 字符串操作之前,您必须确保自己熟悉指针和内存分配。
标签: c