c中的区域程序有问题

Trouble with an area program in c

所以我一直在研究一个程序,可以找到一个形状的面积 我的编译器出现多个错误,说我正在比较 一个指针和一个整数,但是我不是……至少我不认为我是。程序运行,但是当我输入我的字符串时,它崩溃了

这是我的代码

#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");
    }
}

您应该对字符串使用 char *char[] 并重组您的程序流程:

#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 */
}

测试

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