分隔整數我想創建兩個陣列,一個是字符陣列和第二是一個整數陣列。兩者都是在用戶提供關於整數元素數的輸入時動態創建的。所有整數都由空格分隔。如何動態創建的字符數組轉換成整數數組,當輸入與空間
輸入:
第一行包含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'最初爲零時(在你的'calloc'之後)'var = var * anything'永遠不會太多。這只是一個需要注意的設計缺陷。 – WhozCraig
對不起,這是一個'='我打錯了。 –