2つの配列を作成したい、1つは文字配列、もう1つは整数配列です。両方とも、ユーザが整数要素の数について入力を提供するときに動的に作成されます。すべての整数はスペースで区切られます。入力がスペースで区切られた整数の場合、動的に作成された文字配列を整数配列に変換する方法
入力:
最初の行はN
で構成されて、ここでN
整数の数です。ユーザーが5を入力すると、次の行にはスペースで区切られたN
の整数が含まれます。すなわち5つの整数5 10 23 456 2
出力:
はint_array[i], int_array[i+1]
....
5,10
すなわち整数配列から要素を表示します
出力...
しかし、私は私のコードを試みたとき、私が見ることができる唯一の0の整数配列から。
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>
int *cstois(char *char_array, int *int_array, int n) {
int i, j;
for (i = 0, j = 0; i < n; i++) {
if (char_array[i] >= '0' && char_array[i] <= '9') {
int_array[j] == int_array[j] * 10 + (char_array[i] - '0');
} else
if (char_array[i] == ' ') {
j++;
} else
continue;
}
return int_array;
}
int main() {
int i, n;
printf("enter no. of elements");
scanf("%d\n", &n);
char *char_array;
char_array = (char*)malloc(n * sizeof(int));
fgets(char_array, sizeof(char_array), stdin);
int *int_array = (int*)calloc(n, sizeof(int));
cstois(&char_array[0], &int_array[0], n);
for (i = 0; i < n; i++)
printf("%d\n", int_array[i]);
free(char_array);
free(int_array);
return 0;
}
整数を含むファイルをお持ちの場合は、最初にそれらをテキストとして読んでください。なぜ使わないの?ループ中の 'fscanf'? –
'int_array [j] == int_array [j] * ...' ??比較は意図していない?ああコピー/ペースト、あなたは無慈悲な賢者です。これを修正しても、 'var = var * anything'は' var'が最初は0(これは 'calloc'の後ろ)であるときに決して大したものにならないので、まだ動作していないことがわかります。それは注意が必要なデザイン上の欠陥です。 – WhozCraig
申し訳ありませんが、1つの '='私はそれを間違って入力しました。 –