[C] Tipo di dato

jarrod
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
#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
apatriarca
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.

jarrod
si è vero... era proprio quello il problema, ho appena controllato. Grazie mille!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.