Skip to content
Extraits de code Groupes Projets
Valider 06eb6e34 rédigé par Laurent Paucot's avatar Laurent Paucot
Parcourir les fichiers

lecture/écriture ok mais segfault avec CUnit

parent f3d4096a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
all : run
run : run.o test.o
gcc -o run run.o test.o -I${HOME}/local/include -lcunit -L${HOME}/local/lib
gcc -g -o run run.o test.o -I${HOME}/local/include -lcunit -L${HOME}/local/lib
run.o : run.c
gcc -o run.o -c run.c -W -Wall
gcc -g -o run.o -c run.c -W -Wall
test.o : test.c run.h
gcc -o test.o -c test.c -I${HOME}/local/include -W -Wall -lcunit
gcc -g -o test.o -c test.c -I${HOME}/local/include -W -Wall -lcunit
clean :
......
......@@ -5,6 +5,11 @@
#include <unistd.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int is_div(int number, int i) { // Vérifie si i est un diviseur de number.
return (number % i == 0) ; // revoi 0 si le nombre n'est pas divisible par i et 1 si il est divisible
}
......@@ -28,14 +33,15 @@ typedef struct queue{
int size;
}queue_t;
int enqueue(queue_t* q, int val){
queue_t* enqueue(queue_t* q, int val){
struct node new_node;
new_node.value = val;
new_node.next = malloc(sizeof(node_t));
struct node *ptr;
ptr = malloc(sizeof(node_t));
if (ptr == NULL){return -1;}
if (ptr == NULL){return NULL;}
*ptr = new_node;
if (q->size == 0)
......@@ -48,8 +54,8 @@ int enqueue(queue_t* q, int val){
*q->tail->next = *ptr;
}
q->size++;
return 0;
return q;
}
......@@ -65,13 +71,13 @@ queue_t* prime_divs(int number){
for (int i = 2; i < number; i++){
if (is_prime(i) == 1 && is_div(number, i)){
int err = enqueue(ptr,i);
if (err == -1){return NULL;}
ptr = enqueue(ptr,i);
if (ptr == NULL){return NULL;}
}
}
}
int err1 = enqueue(ptr,-1);
if (err1 == -1){return NULL;}
//ptr = enqueue(ptr,-1);
//if (ptr == NULL){return NULL;}
return ptr;
......@@ -83,7 +89,7 @@ int run (char *input,char *output){
FILE *file1 = NULL;
FILE *file2 = NULL;
//char chaine[50];
char chaine[50];
file1 = fopen(input,"r");
if (file1 == NULL){return -1;}
......@@ -94,17 +100,29 @@ int run (char *input,char *output){
return -1;
}
/* while (fgets(chaine,50,file1) != NULL){
while (fgets(chaine,50,file1) != NULL){
struct queue *pr_divs;
pr_divs = malloc(sizeof(queue_t));
if (pr_divs == NULL){return -1;}
pr_divs = prime_divs(atoi(chaine));
queue_t *pr_divs = prime_divs(atoi(chaine));
char *ptr;
ptr = malloc(50);
ptr = strchr(chaine,'\n');
*ptr = '\0';
struct node *current;
current = malloc(sizeof(node_t));
*current = *pr_divs->tail;
fprintf(file2,"%s ",chaine);
for (int i = 0; pr_divs[i] != -1; i++)
for (int i = 0; i < pr_divs->size; i++)
{
fprintf(file2,"%d ",pr_divs[i]);
fprintf(file2,"%d ",current->value);
current = current->next;
}
fputc('\n',file2);
} */
}
fclose(file1);
fclose(file2);
......@@ -113,21 +131,9 @@ int run (char *input,char *output){
}
/* int main() {
// test pour is_div(int number, int i)
int number = 10 ;
int number1 = 11 ;
int i = 3 ;
printf("%d\n",is_div(number,i)) ; // 1
printf("%d\n",is_div(number1,i)) ; // 0
// test pour is_prime(int number)
int number2 = 1498498411 ;
int number3 = 5 ;
int number4 = 14545144 ;
printf("%d\n",is_prime(number2)) ; // 0
printf("%d\n",is_prime(number3)) ; // 1
printf("%d\n",is_prime(number4)) ; // 0
//prime divis
afficherListe(prime_divs(number));
return 0;
} */
\ No newline at end of file
/* int main(){
int err = run("input.txt","actual_output.txt");
return err;
} */
......@@ -34,15 +34,15 @@ void file_test(void){
}
file2 = fopen("actual_output.txt","r");
if (file2 == NULL){
CU_FAIL("actual_output opening fail");
return;
}
if (file2 == NULL){
CU_FAIL("actual_output opening fail");
return;
}
char chaine1[500];
char chaine2[500];
char chaine1[50];
char chaine2[50];
while (fgets(chaine1,500,file1) != NULL && fgets(chaine2,500,file2) != NULL)
while (fgets(chaine1,50,file1) != NULL && fgets(chaine2,50,file2) != NULL)
{
CU_ASSERT_STRING_EQUAL(chaine1,chaine2);
}
......@@ -81,8 +81,8 @@ int main(){
if (NULL == CU_add_test(pSuite,"test_is_div",test_is_div) ||
NULL == CU_add_test(pSuite, "test_is_prime",test_is_prime) ||
NULL == CU_add_test(pSuite, "test_is_not_prime",test_is_not_prime))
//|| NULL == CU_add_test(pSuite,"file_test",file_test))
NULL == CU_add_test(pSuite, "test_is_not_prime",test_is_not_prime)
|| NULL == CU_add_test(pSuite,"file_test",file_test))
{
CU_cleanup_registry();
return CU_get_error();
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter