[C] Tipo di dato
La funzione vuole ritornare il valore assoluto della differenza tra gli elementi di posizione corrispondenti nei vettori a e b.
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
questo è il file.h
questo è il file.c
ps: per tipo di dato, intendo qualche tipo di dato che ho usato nel file.c..
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
#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
#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
#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..
Risposte
Non sono sicuro di aver capito la domanda. Vedo però che incrementi due volte i: una volta nel corpo del for e l'altra alla fine del ciclo.
si è vero... era proprio quello il problema, ho appena controllato. Grazie mille!