scanf()语句中的分段错误(核心转储)

时间:2017-04-30 03:23:14

标签: c file

我测试了代码,错误似乎来自第二个scanf()

scanf("%s", password);

我评论了整个if声明,测试什么是有效的,什么不是,我也测试了strcmp()是否正常工作,它是。我不明白为什么我在scanf()

上遇到分段错误
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include "Admin.h"
//#include "customer.h"


int main(int argc, char *argv[])
{
        typedef char * String;
        String AdminUser = "Admin";
        String AdminPW = "Admin";
        String username, password;

        printf("Welcome to Online Banking/ATM System\n");
        printf("====================================\n\n\n");

        printf("Enter your Customer/Admin ID: ");
        scanf("%s", username);

        if (strcmp(username, AdminUser) == 0) {
                printf("Enter your Customer/Admin Password: ");
                scanf("%s", password);

                if (strcmp(password, AdminPW) == 0) {
                        while(1){
                                break;
                        }
                }
        }
}

另外在旁注,如果有人能向我解释如何读取和写入文件,那就太棒了。我理解打开和关闭文件以及读写的基础知识,但具体来说我需要知道的是如何将信息写入文件,以便我可以参考它并从中选择信息。 EX:文本文件中有人员的银行信息列表,我特别希望看到客户ID 12345。 我该怎么做,如何编辑它,以及如何删除它。

我最终可能会弄明白,但非常感谢帮助!

1 个答案:

答案 0 :(得分:2)

用户名和密码只是声明为char *,它们没有分配任何内存,这会导致分段错误,需要调用malloc为它们分配内存,或者将它们声明为字符数组