So i have been working on a program that will find the area of a shape and i have been getting multiple errors on my compiler saying that i am comparing a pointer and an integer, however i am not... at least i don't think that i am. The program runs, however when i input my string, it crashes
here is my code
#include <stdio.h>
#include <math.h>
int main(void){
char str_1;
printf("Hello! This program will find the area of selceted figrues!\n");
printf("What is your shape? The only shapes that work are Triangles,\
Rectangles, and Circles\n");
scanf("%c", str_1);
do {
printf("That is an invalid input the only shapes that work are Triangles, \
Rectangles, and Circles\n");
scanf("%c", str_1);
}
while(str_1 != "circle", "rectangle", "triangle");
if (str_1 == "circle") {
printf("What is the radius?\n");
scanf("%i");
}
}
You should use char *
or char[]
for strings and restructure your program flow:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <memory.h>
void msg() {
printf("What is your shape? The only shapes that work are Triangles,\
Rectangles, and Circles\n");
}
int main(void) {
char *str_1 = malloc(32);
float f, f2, f3;
printf("Hello! This program will find the area of selected figures!\n");
msg();
scanf("%s", str_1);
for (; ;) {
if (strcmp(str_1, "circle") && strcmp(str_1, "rectangle") && strcmp(str_1, "triangle")) {
printf("That is an invalid input the only shapes that work are Triangles, \
Rectangles, and Circles\n");
msg();
scanf("%s", str_1);
}
if (!strcmp(str_1, "circle")) {
printf("What is the radius?\n");
scanf("%f", &f);
printf("The area is %f\n", f * M_PI * M_PI);
msg();
scanf("%s", str_1);
continue;
}
else if (!strcmp(str_1, "rectangle")) {
printf("What is the length?\n");
scanf("%f2", &f2);
printf("What is the height?\n");
scanf("%f3", &f3);
printf("The area is %f\n", f2*f3);
msg();
scanf("%s", str_1);
continue;
}
}
free(str_1); /* unreachable */
}
Test
Debug/gnu
Hello! This program will find the area of selected figures!
What is your shape? The only shapes that work are Triangles,Rectangles, and Circles
circle
What is the radius?
5
The area is 49.348022
What is your shape? The only shapes that work are Triangles,Rectangles, and Circles
cube
That is an invalid input the only shapes that work are Triangles, Rectangles, and Circles
What is your shape? The only shapes that work are Triangles,Rectangles, and Circles
rectangle
What is the length?
2
What is the height?
4
The area is 8.000000
What is your shape? The only shapes that work are Triangles,Rectangles, and Circles