Però provando con diversi main.c, il programma non funziona sempre correttamente. Ho l'impressione che l'errore sia per quanto riguarda il tipo di dato.. qualcuno saprebbe dirmi qual è il problema, perchè il programma non è valido per ogni caso?
questo è il main.c
- Codice:
#include "bytearray.h"
int main(){
uint8_t a[] = { 7, 3, 1 };
uint8_t b[] = { 4, 3, 2 };
uint8_t *ris = absdiff(a, b, 3);
return 0;
}
questo è il file.h
- Codice:
#if !defined BYTEARRAY_H
#define BYTEARRAY_H
#define _CRT_SECURE_NO_WARNINGS
#include<stdint.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
extern uint8_t *absdiff(const uint8_t *a, const uint8_t *b, size_t n);
#endif
questo è il file.c
- Codice:
#include "bytearray.h"
uint8_t *absdiff(const uint8_t *a, const uint8_t *b, size_t n){
if (n == 0){
return NULL;
}
uint8_t *ris = malloc(n * sizeof(int));
int risTemp;
for (unsigned int i = 0; i < n; i++){
risTemp = a[i] - b[i];
risTemp = abs(risTemp);
ris[i] = risTemp;
i++;
}
return ris;
}
ps: per tipo di dato, intendo qualche tipo di dato che ho usato nel file.c..