[英]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]
时。 它创建一个带有下标0
到99
的数组
str[MAX]
不存在。 {至少您不能访问它}
insertString(str, &length);
会做的很好,它通过一个数组
你应该使用
insertString(str, &length);
要么
insertString(&str[0], &length);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.