簡體   English   中英

在Linux上的字符數組中存儲命令行參數

[英]Store Command Line arguments in a character array on Linux

我是Linux上的新手。 我想問一下如何在字符數組中存儲命令行參數。 我從一個小時開始使用以下代碼,但無法解決此問題(細分錯誤Core Dumped)。 這是代碼

int main(int argc, char **argv[]) {
    char * MyIp[15];
    int j = 0;
    while(argv[1][j] != '\0') {
        MyIp[j] = argv[1][j++];
    }
    printf("IP : %s\n", *MyIp);
    return 0;
}

和命令行參數

./code.o "127.0.0.1"
Segmentation fault(core dumped)

您顯示的小代碼有很多問題。 首先,您將MyIp聲明為char的指針數組,即字符串數組。 您是從argv[1][j++]分配給它的,它是單個字符 ,並且在打印時將*MyIp作為字符串(它聲明為)打印,但是這里的問題是打印的指針( MyIp[0] )是由字符初始化的,它不是非常有效的指針。

您似乎想要的是復制單個字符串argv[1] ,在這種情況下,有很多簡單的方法,例如strncpy ,它用於復制具有特定長度的字符串:

char MyIp[15];
if (argc > 1)
{
    strncpy(MyIp¸ argv[1], 14);
    MyIp[14] = '\0';  // If `argv[1]` is too long, terminate manually
}
else
    strcpy(MyIp, "Unknown");

printf("IP : %s\n", MyIp);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM