首页 > 解决方案 > 如何编写用指针扫描字符串的程序

问题描述

我正在尝试编写一个程序,要求用户输入几个名称(在本例中为 3,请查看我的定义),该程序带有函数scan_names,并且print_names无论我做什么都会扫描名称并打印它们不要成功:(

这是我得到的异常:“在 Magshimim_EX175.exe 中的 0x0FD6FB7C (ucrtbased.dll) 处引发异常:0xC0000005:访问冲突读取位置 0x00616161。”

#include <stdio.h>

#define LINE 3
#define LENGH 10

void print_names(char* names[LENGH], int line)
{
    printf("\nYour names are:\n");
    for (size_t i = 0; i < line; i++) {
        puts(names[i]);
    }
}

void scan_names(char* names[LENGH], int line)
{
    for (int i = 0; i < line; i++) {
        printf("\nEnter name %d:  ", i + 1);
        fgets(names[i],LENGH,stdin);
    }
}

int main(void)
{
    char names[LINE][LENGH] = { NULL };
    scan_names(names, LINE);
    print_names(names, LINE);
}

标签: c

解决方案


char names[LINE][LENGH]是一个二维字符数组。char* names[LENGH]是字符指针的一维数组。就像您的编译器告诉您是否打扰阅读警告/错误一样:类型不兼容。

将函数更改为void print_names(char names[LINE][LENGH], int line)


推荐阅读