這是我在 StackOverflow 上的第一個問題!:) 老實說,我即將破壞我的整個設定。
我的代碼讓我發瘋。
我的問題是,我無法用函式的回傳來填充動態陣列。我的目標是,對于每個陣列框,用隨機值“randomizer”填充它。我無法在陣列框中回傳亂數。
這是代碼:
主.c:
#include "functions.h"
#include "functions.c"
/* TP 3 - ESIEE-IT Rémy JARDIN */
int main() {
int saisie, i;
printf("Creation du Tableau. \nNombre de caractere du tableau : ");
scanf("%d", &saisie);
ArrayCreate(saisie);
// Affichage
return 0;
}
函式.h:
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
#include <stdio.h>
#include <stdlib.h>
int ArrayCreate(int saisie);
int randomizer();
int insereAIndice();
#endif
函式.c:
#include <stdio.h>
#include <stdlib.h>
int ArrayCreate(int saisie) {
int i;
int *Tab = (int *)malloc(saisie * sizeof(int));
if (Tab == NULL) {
printf("Not enough Memory");
exit (1);
}
for (i = 0; i < saisie; i ) {
Tab[i] = (randomizer 1);
}
printf("\n Resultats : ");
for (i = 0; i < saisie; i ) {
printf("%d - ", *(Tab i));
}
return 0;
}
int randomizer() {
//int x = rand() % (100 1);
return 1;
}
錯誤是:
functions.c: In function 'ArrayCreate':
functions.c:12:8: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
Tab[i] = (randomizer 1);
uj5u.com熱心網友回復:
而不是Tab[i] = (randomizer 1);你應該寫:
Tab[i] = randomizer();
另請注意以下備注:
functions.h 中的函式原型應該有一個引數
void:int randomizer(void); int insereAIndice(void);檔案functions.c應該包括functions.h以確保函式宣告和定義之間的一致性。
寫作
*(Tab i)的可讀性遠不如Tab[i]. 如果您想混淆代碼,請使用i[Tab]等效的代碼:)
這是修改后的版本:
#include <stdio.h>
#include <stdlib.h>
#include "functions.h"
int ArrayCreate(int saisie) {
int i;
int *Tab = (int *)malloc(saisie * sizeof(int));
if (Tab == NULL) {
fprintf(stderr, "Not enough Memory\n");
exit(1);
}
for (i = 0; i < saisie; i ) {
Tab[i] = randomizer();
}
printf("\n Resultats : ");
for (i = 0; i < saisie; i ) {
printf(" %d", Tab[i]);
}
printf("\n");
return 0;
}
int randomizer(void) {
// return a random integer in the range 1..100
return 1 rand() % 100;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/483998.html
