そのため、組み込みstrtol
が0を返す理由について混乱しています。マニュアルから、変換が不可能な場合は0を返すと書かれています。あまりにも私ですが、適切に変換する必要があります。これが関数です。
struct coin * addCoins(char *val){
char *ptr =NULL;
long int denomination = strtol(val, &ptr,10);
long int count = strtol( &ptr,NULL, 10);
printf("%d",count);
struct coin *k;
k = malloc(sizeof(struct coin));
k->denom = denomination;
k->count = count;
return k;
}
これは、コインの金種とコインの数を表す long 整数を返します。これらは、coin 型の構造体に格納されます。次のものがありますtypedef
。
/* Each coin in the coins array will have a denomination (20 cents,
* 50 cents, etc) and a count - how many of that coin do we have on hand
*/
struct coin
{
enum denomination denom;
unsigned count;
};
読み込まれるファイルの形式は次のとおりです。 最初の列は金種で、2 番目の列はカウントです。
1000,3
500,4
200,20
100,30
50,5
20,3
10,40
5,20
区切り文字はコンマです。特に strtol を使用するように指示された場合は、それ以外の場合は を使用しますstrtok_r
。