c language with error CL.exe exit code 2

  • Thread starter Thread starter howard choi
  • Start date Start date
H

howard choi

Guest
the below code has an error :CL.exe exit code 2.

it work in fine in other ide, however in visual studio has an erro. I have no idea why.


#include <stdio.h>
#include <stdlib.h>
#include<ctype.h>
struct digit {
int num;
struct digit* next;
};

// Write your prototypes here
struct digit* createDigit(int dig);
struct digit* append(struct digit* end, struct digit* newDigptr);
void printNumber(struct digit* start);
struct digit* readNumber(void);
void freeNumber(struct digit* start);
int divisibleByThree(struct digit* ptr);

int main(void) {

struct digit* start;
start = readNumber();

printf("The number ");
printNumber(start);
if (divisibleByThree(start))
printf("is divisible by 3.\n");
else
printf("is not divisible by 3.\n");
freeNumber(start);
return 0;
}

struct digit* createDigit(int dig) {
struct digit* ptr;
ptr = (struct digit*) malloc(sizeof(struct digit));
ptr->num = dig;
ptr->next = NULL;
return ptr;
}

struct digit* append(struct digit* end, struct digit* newDigptr) {
end->next = newDigptr;
return(end->next);
}

void printNumber(struct digit* start) {
struct digit* ptr = start;
while (ptr != NULL) {
printf("%d", ptr->num);
ptr = ptr->next;
}
printf("\n");
}

void freeNumber(struct digit* start) {
struct digit* ptr = start;
struct digit* tmp;
while (ptr != NULL) {
tmp = ptr->next;
free(ptr);
ptr = tmp;
}
}

struct digit* readNumber(void) {
char c;
int d;
struct digit* start, * end, * newptr;
start = NULL;
scanf_s("%c", &c);
while (isdigit(c)) {
d = c - 48;
newptr = createDigit(d);
if (start == NULL) {
start = newptr;
end = start;
}
else {
end = append(end, newptr);
}
scanf_s("%c", &c);
}
return(start);
}

//Write your divisibleByThree() function here
int divisibleByThree(struct digit* start) {
struct digit* ptr = start;
int i = ptr->num;
int divisible = 3;
while (ptr->next != NULL) {
i = ptr->next->num + (i % divisible) * 10;
ptr = ptr->next;
}
//printf("\n%d\n",i);
if (i % divisible) return 0;
else return 1;

}

Continue reading...
 
Back
Top