使用指针将字符和浮点值从 scanf 返回到主函数 C

埃迪戴维斯

我不太明白为什么指针将值从 scanf 从 info 函数传递到 main 函数,但我刚刚在 info 函数中定义的函数没有传递回 main 函数。我是否需要 do while 循环来实现确保用户为 ab 和 c 输入值的目标?

    #include <stdio.h>

    void info (char *a, char *b, char *c);

    void main(void)
    {
        char lett1 = 'a', lett2 = 'b', lett3 = 'c';
        info (&lett1, &lett2, &lett3);
        printf("\n The characters chosen are: %c, %c and %c", lett1, lett2, lett3);
    }

    void info (char *a, char *b, char *c)
    {
        a = 'E';
        printf("\n Type any 2 characters then press enter:  "); 
        fflush(stdin);
        scanf(" %c", b);
        do{
            scanf(" %c", c);
        }while (c == NULL);
    }

第二段代码是我也使用指针和 scanf 但我无法让程序工作的地方。当我使用我注释掉的部分时,(type = 'A' 或 type = 'B')它可以工作,但不适用于 scanf。此外,输入函数中定义的值永远不会移动到主函数。

    #include <stdio.h>

    void input (char *type, float *BU_Dist, float *SC_Dist, float *DC_Dist);

    void main (void)
    {
        char type_M = 'Z';
        float BU_Dist_M, SC_Dist_M, DC_Dist_M;
        input (&type_M, &BU_Dist_M, &SC_Dist_M, &DC_Dist_M);
        printf("Value back in the main is %c", type_M);
    }

    void input (char *type, float *BU_Dist, float *SC_Dist, float *DC_Dist)
    {
        printf("Which car type (A/B):");
        fflush(stdin);
        scanf("%c", type);
        //type = 'A'
        //type = 'C';
        printf ("%c \n\n", type);
        if(type == 'A'|| type == 'B'||type == 'a'||type == 'b') { 
        printf("\nGreat! &c selected! \n", type);
        }else{
        type = 'A';
        printf("\nInvalid value selected, type has been defaulted to %c \n", type);
        }
    }

任何帮助理解指针和 scanf 在主函数以外的函数中如何协同工作都会非常有用。谢谢

用户2736738

在注释部分中,您将 char 值分配给char*导致未定义行为的结果。

同样在这段代码中,你也做了type='A'基本上没有涵盖的代码,因为我认为代码没有转到其他部分。

如果你想分配,你会这样做*type='A'

为了进行比较,您需要取消引用char*以获取值。

if(*type == 'A'|| *type == 'B'||*type == 'a'||*type == 'b') {

fflush()意味着用于输出流而不是输入流。你所做的会调用未定义的行为。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C中,从函数返回scanf值

来自分类Dev

C: 忽略 scanf 的返回值

来自分类Dev

C语言如何将指针从函数返回到指针

来自分类Dev

将数组地址从函数返回到指针(C ++)

来自分类Dev

将数组地址从函数返回到指针(C ++)

来自分类常见问题

C scanf函数返回太多元素

来自分类Dev

C scanf函数返回太多元素

来自分类Dev

OpenVMS(VAX)Fortran函数将字符*(*)返回到C

来自分类Dev

C:如何将多个值从函数返回到main

来自分类Dev

Scanf(“%c%f%d%c”)返回奇怪的值

来自分类Dev

scanf()的返回值

来自分类Dev

Scanf返回意外值

来自分类Dev

scanf()的返回值

来自分类Dev

如何将返回指针从C ++ dll函数返回到C#

来自分类Dev

将char数组从C ++函数返回到tcl

来自分类Dev

Oracle 函数将行返回到 C#

来自分类Dev

C和指针中的scanf语句

来自分类Dev

在C中使用信号处理函数后,如何避免scanf?

来自分类Dev

从C#调用C dll中的函数,该函数将某种类型的指针返回到函数指针

来自分类Dev

C语言中的Scanf字符

来自分类Dev

将int array []或指向int array []的指针返回到C中的调用例程的函数

来自分类Dev

在 scanf 函数中使用指向矩阵的指针

来自分类Dev

scanf(“%s”,name)之间的区别;和scanf(“%[^ \ n]%* c”,名称);

来自分类Dev

如何从C的PyObject类型的函数将值从C返回到python?

来自分类Dev

使用scanf读取C ++字符串

来自分类Dev

使用scanf读取C ++字符串

来自分类Dev

在C中使用scanf匹配常规字符

来自分类Dev

如何使用inline-c来包装将指针返回到自定义结构类型的函数?

来自分类Dev

C double值未使用scanf存储