我正在尝试将char数组中的多项式系数放入一个int数组中
我有这个:char string[] = "-4x^0 + x^1 + 4x^3 - 3x^4";
并可以将其标记为空格
-4x ^ 0
x ^ 1
4x ^ 3
3x ^ 4
所以我试图将-4、1、4、3放入一个int数组
int *coefficient;
coefficient = new int[counter];
p = strtok(copy, " +");
int a;
while (p)
{
int z = 0;
while (p[z] != 'x')
z++;
char temp[z];
strncpy(temp[z], p, z);
coefficient[a] = atoi(temp);
p = strtok(NULL, " +");
a++;
}
但是,我收到一个错误,我无法将char *转换为char
在strncpy(temp [z],p,z);
error: invalid conversion from ‘char’ to ‘char*’
error: initializing argument 1 of ‘char* strncpy(char*, const char*, size_t)’
最好的方法是什么?
最佳答案
这个:
strncpy(temp[z], p, z);
需要是:
strncpy(temp, p, z);
但是请记住,
strncpy
并不总是以null结尾的字符串。同样,
z
将是系数的长度,但是您需要在缓冲区中为空终止符增加一个字节。更新:
检查您的链接,我仍然看到几个严重的问题:
strtok
中使用“-”,因为它将拾取“-4x”中的一个以及您想要的一个。我认为您应该只在空格上分割,并将+/-运算符作为标记处理。 strncpy
函数使字符串不终止,这可能导致atoi
崩溃或随机提供错误的值。一种惯用形式是手动编写终止符,例如temp[z] = '\0'
。 coefficient[a] =
未初始化,因此a
正在写入一些随机内存。 关于c++ - C标记化多项式系数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1801220/