我正在编写一个程序,它接受一个字符串作为输入,例如, 35x40x12。然后我想使用一个int指针将这些数字存储为单独的元素。到目前为止,我已经设法做到这一点,使单个数字的数字工作,即3x4x6的作品,但如果我把两个数字的数字,如35x40x12,35将存储在第一个位置,但在第二个位置,它也将从35中存储5个,它对于位置3和4也是40个。我如何消除这种重复?将字符指针转换为字符串指针,消除重复
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int present(int l, int w, int h);
int *stringC (char *z);
int main(int argc, char *argv[])
{
char *d = "53x23x4";//input
printf("%d", *(stringC(d)+2));//whatever's stored in pointer position
return 0;
}
int *stringC (char *z)
{
int i;
int *k = malloc(sizeof(int)*20);
int j = 0;
for(i=0; z[i] !='\0';i++)
{
if(z[i]!= 'x')
{
k[j]=atoi(&z[i]);
j++;}
}
return k;
}
您想了解如何起诉调试器,以便能够浏览您的代码并查看究竟发生了什么。这里还有一些有用的提示:http://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – alk
“atoi”之后,您必须前进到下一个“x”或字符串终止符,但'i'仍然索引你刚刚转换的数字的一部分。这就是为什么它只适用于单位数字。更好的是,前进到下一个非数字,以便您的算法可以处理不同的算术运算符。 –
C没有特定的'string'类型。 – Olaf