c - 如何编写用指针扫描字符串字符串的程序

标签 c

我正在尝试编写一个程序,要求用户输入几个名称(在本例中为 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);
}

最佳答案

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

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

关于c - 如何编写用指针扫描字符串字符串的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56062216/

相关文章:

c - 如何从 txt 文件中取出数字和单词并将它们分配给 int 和 char*

c - C 中的是/否循环

c - 三个传感器,带 2 个 RGB LED Arduino

c++ - 为什么当我放入偶数个元素时我的程序不工作

c - 在C语言中使用套接字创建服务器和客户端应用程序检查文件

c - 从数字字符串中获取位

C (gcc) 警告 : initialization from incompatible pointer type when calling pthread_cleanup_push()

javascript - 从 LWIP 服务器响应中检索 16 位整数

c - C 中的总线错误 : 10,

c - 在循环中使用 scanf 处理 SIGINT