我正在編寫一個程序,它接受一個字符串作爲輸入,例如, 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