c - 为什么我不能从 switch 语句中读取函数

标签 c

程序将字符串存储为字符串数组。字符串可以是名称、地址等。 • 程序显示一个选择屏幕,允许用户输入字符串(最多 16 个,字符串有一个 最多 128 个字符)、从数据库中删除字符串、查看数据库中的字符串、搜索 字符串,然后退出程序。

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void clearscreen()
{
    system("cls");
}

int main()
{
    int b1,b,c;
    char data[20]; 
    int number,a;

    do{
        clearscreen();
        printf("How many data do you want to store  ");
        scanf("%d",&number);

        for(a=1;a<=number;a++)
        {
            printf("Input your data %d_No:       ",a);
            scanf("%s",&data[a]);
        }

        printf("What action do you want to do\n [1]Remove data\n [2]View data\n [3]Search data\n[4] Quit");
        scanf("%d",&b1);

        switch(b1)
        {
            case 1:

                clearscreen();
                break;
            case 2:
                for(c=1;c=number;c++)
                {
                    printf("%d:%s",a,data[a]);
                }
                break;
            case 3:
                break;
            case 4:
                return 0;
                break;
        }

        printf("\nDO you want to continue\n[1] YES\n [2] No   ");
        scanf("%d",&b);
        if (b==2)
        {
            return 0;
        }
    } while(b !=2);
}

程序正在运行,但是当我切换到2时,它无法读取int数字和char数据 为什么?我该怎么办?

最佳答案

for(c=1;c=number;c++)
    printf("%d:%s",a,data[a]);

我在这里看到三个问题。第一个是您可能的意思是 c <= number ,基于您的数据输入循环。

第二个是您正在使用 a作为数组索引而不是 c你应该使用。

最后一个是数组是从零开始的,所以 int a[20]给你a[0]通过a[19]包括的。换句话说,你的循环应该从 0 开始。至number - 1而不是1number .

关于c - 为什么我不能从 switch 语句中读取函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12881500/

相关文章:

c++ - zlib deflate 和动态输出缓冲区

C++ 将对数组的引用传递给 C 函数

c - 信号和SIGCHLD,它有什么作用呢?

c - 我想了解 c 中 "printf"函数的工作原理。例如,对于下面代码中使用的打印语句,输出不同,为什么?

c - 在套接字中使用 fork() 调用后服务器未退出

c - 将数组中的数字写入函数命令

c++ - 我可以为任何可以进入 Extern C 的 C++ vector 制作一个 C 包装器吗

C 程序 Switch 和 If 语句

kmalloc() 可以返回无效内存吗?

c - 如何确定是否启用了 CONFIG_FANOTIFY_ACCESS_PERMISSIONS?