簡體   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