C:是否可以合并/分组char数组中的某些元素,使其成为字符串数组?

时间:2018-12-06 21:50:50

标签: c arrays merge concatenation

我在C中有一个字符数组:

Array = {'7', '.', '8', '*', '3', '-', '4', '.', '5', '6', '+', '1', '0'}

上面是一个数学公式7.8 * 3 - 4.56 + 1,在这里我已将每个字符存储为数组中的单个元素。

我正在尝试更改数组,以便十进制数是一个元素。因此,该数组应如下所示:

Array = {'7.8', '*', '3', '-', '4.56', '+', '1'}

如果有人可以向我展示如何清楚地做到这一点,我将不胜感激。

我是C的新手,所以如果这个问题不完整,我深表歉意。感谢您的任何事先帮助!

2 个答案:

答案 0 :(得分:1)

C不支持字符串。您可以使用char数组来实现它们,例如:

#define MAX_SIZE 50
char expression[MAX_SIZE];
scanf("%s", expression); // input the expression from the user

主要问题是因为char绑定到1个字母,所以您无法在C中编写“ 7.5”。注意,为了限制数组长度,我使用了定义,您必须声明一个具有常数的数组。

如果要创建这样的数组:

Array = {'7.8', '*', '3', '-', '4.56', '+', '1'}

该数组将是char []的数组,它是:char [] []类型,是“字符串”的数组。

让我知道这是否对您有所帮助:)

答案 1 :(得分:1)

如果我对您的理解正确,那么您只需要:

const char *array[] = { "7.8", "*", "3", "-", "4.56", "+", "1"};
// well, short usage example:
for (size_t i = 0; i < sizeof(array)/sizeof(*array); ++i) { 
     printf("array[%zu] = %s\n", i, array[i]);
}

array是一个指向常量字符的指针数组。该数组的每个元素都是字符串文字。字符串文字在C中是不可变的,因此必须是指向const字符的指针(您可以删除const,这仅适用于编译器。修改字符串文字的内存是未定义的行为)。 / p>