[英]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.