c - scanf() 语句上的段错误(核心转储)

标签 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;
                        }
                }
        }
}

另外,如果有人可以向我解释如何读取和写入文件,那就太好了。我了解打开和关闭文件以及读取和写入的基础知识,但具体来说,我需要知道的是如何将信息写入文件,以便我可以引用它并从中选取信息。 例如:文本文件中有一个人们的银行信息列表,我特别想查看客户 ID 12345。 我该如何做到这一点,如何编辑它,如何删除它。

我最终可能会弄清楚,但我们将不胜感激!

最佳答案

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

关于c - scanf() 语句上的段错误(核心转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43702602/

相关文章:

linux - 内存映射文件系统调用 - linux

c - 检查命令行参数时出错

c - 从内存缓冲区设置结构体的 int

java - 获取加密文件的文件名

Android - 探索我的应用程序数据

java - 如何将重复数组元素分配为唯一键,并计算相应的整数值?

c - 字符串如何隐式类型转换为字符?

c - 可以命名一个与结构标签同名的变量吗?

c - 为什么 UTF-8 编码为 U+1xxxx 字符的 2 个字节?

file - Jmeter,如果使用 jsr223 postProcessor 存在,则将数据写入文件