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