繁体   English   中英

C编程中的strcpy错误

[英]Error with strcpy in C programming

下个月我要考试,我正在处理所有不清楚的事情。 我创建了一个函数,该函数仅允许用户输入字符串并返回字符串及其长度作为参数。 我正在使用strcpy将函数内部声明的变量中的字符串复制到第一个参数参数中,但是到达该点时程序崩溃。

#include <stdio.h>
#include <string.h>
#define MAX 100

void insertString(char orig[], int *len);

int main()
{
    int length = 0;
    char str[MAX] = {0};

    insertString(str[MAX], &length);

    printf("You have inserted: %s", str); 
    printf("The length of the stream you entered is: %d", length);

    return 0;
}

void insertString(char orig[], int *len)
{
    char str1[MAX];
    printf("Insert your string: ");
    fgets(str1, MAX, stdin);
    strcpy(orig, str1);
    *len = strlen(str1) - 1;
}
insertString(str[MAX], &length);]

传递一个字符(也超出范围)。

您想传递一个指向数组的指针:

insertString(str, &length);

更改行insertString(str[MAX], &length); insertString(str, &length);

前者正在尝试传递一个字符(很奇怪,这没有给您警告),而后者正在将指针传递到缓冲区的开始,我想这就是您想要的...

更改

insertString(str[MAX], &length);

insertString(str, &length);

您想传递的字符数组不只是一个字符。

char str[MAX] = {0};

insertString(str[MAX], &length);

就此而言,当您使用MAX为100进行char str[MAX]时。 它创建一个带有下标099的数组

str[MAX]不存在。 {至少您不能访问它}

insertString(str, &length); 会做的很好,它通过一个数组

你应该使用

insertString(str, &length);

要么

insertString(&str[0], &length);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM