【发布时间】:2016-12-17 03:37:08
【问题描述】:
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#define MAX_SIZE 20
void main()
{
int i, j;
char *str1, *str2, *str3, *str_mid;
bool **lcs1, **lcs2;
int len1, len2, len3, len_mid;
char *ch = (char*)malloc(sizeof(char) * 3);
str1 = (char*)malloc(sizeof(char)*MAX_SIZE); //applicatian
str2 = (char*)malloc(sizeof(char)*MAX_SIZE); //apiasn
str3 = (char*)malloc(sizeof(char)*MAX_SIZE); //apun
str_mid = (char*)malloc(sizeof(char)*MAX_SIZE); //apn
str_mid = "";
scanf("%s", str1);
scanf("%s", str2);
scanf("%s", str3);
len1 = strlen(str1);
len2 = strlen(str2);
len3 = strlen(str3);
//str2, str3 ->str_mid (lcs1)
lcs1 = (bool**)malloc(sizeof(bool*)*(len3 + 1));
for (i = 0; i < len3 + 1; i++)
lcs1[i] = (bool*)malloc(sizeof(bool)*(len2 + 1));
for (i = 0; i < len3 + 1; i++)
for (j = 0; j < len2 + 1; j++)
lcs1[i][j] = false;
for (i = 1; i < len3 + 1; i++)
for (j = 1; j < len2 + 1; j++)
if (str3[i-1] == str2[j-1])
lcs1[i][j] = true;
for (i = 1; i < len3 + 1; i++)
{
for (j = 1; j < len2 + 1; j++)
if (lcs1[i][j])
{
//<--- error
ch = str3[i - 1];
strcat(str_mid, ch);
//--->
break;
}
}
//printf("%s", str_mid);
//str_mid, str1 (lcs2)
}
在部分,
我想连接 str3[i-1] 和 str_mid 但是,str3[i-1] 是字符类型。
因此,将临时字符串设为 ch 并执行 concatenate。
但是,出现了访问错误。
如何将char转为string或者,如何将char和string连接起来?
【问题讨论】:
-
高级语言中的字符串是缓冲区的抽象——它可以是不可变的、固定大小的、预分配的或扩展的(所有这些都带有或不带有通道内标记值,通常是
\0aka “以空字符结尾的字符串”)。 C 没有定义自己的字符串类型,尽管大多数库使用固定大小的缓冲区。这需要您自己处理。 -
OT:
sizeof(char)是1be 定义。 -
OT^2:不要在 C 中强制转换 malloc 和朋友,它只是没用。
标签: c