2012-12-21 457 views
-3
#include <stdio.h> 
int main(char sendbuf[100]) 
{ 
    printf (sendbuf); 
    return 0; 
} 

不知何故,當我嘗試使用它時,這個非常基本的程序崩潰了,它意味着打印任何鍵入的參數。如果我刪除行「printf(sendbuf);」墜毀消失了。printf導致崩潰

回答

1

您的第一個參數必須是整數,而不是char數組。這裏是正確的程序:

#include <stdio.h> 
int main(int argc, char* argv[]) 
{ 
    if (argc > 1) { 
     printf(argv[1]); 
    } 
    else { 
     printf("No arguments provided"); 
    } 
    return 0; 
} 

的argv [0]是你的程序的名字,所以的argv [1]是提供TEH命令行中的第一個參數。

+0

program.exe'沒有提供參數' –

+0

@JiveDadson:是的。我最初跳過了參數檢查,以保持示例儘可能簡單。無論如何,別人修改答案,我調整了一下,所以這是解決。 – RonaldBarzell

1

C支持兩種主要功能:

int main() { /* ... */ } 
and 
int main(int argc, char* argv[]) { /* ... */ } 

要拍攝參數從主,則需要更改您的代碼:

#include <stdio.h> 
int main(int argc, char* argv[]) 
{  
    if (argc > 1){ 
    printf ("%s\n", argv[0]); 
    } 
    return 0; 
} 

或者使用流:

#include <iostream> 
int main(int argc, char* argv[]) 
{  
    if (argc > 1){ 
    std::cout << argv[0]) << std::endl; 
    } 
    return 0; 
} 

argv [0]是應用程序名稱,輸入參數從argv [1]開始,如果有的話。

+0

爲什麼選擇C++?這個問題被標記爲C. – effeffe

+0

在C++之前被標記了,我已經更新了我的答案 – billz

+0

我正在使用C++,我的問題被其他人編輯... – user1882226

1

main的第一個參數是參數的數量。第二個參數是一個字符串數組。第二個參數的第一個元素(索引0)是你的程序的名稱:

#include <stdio.h> 
int main(int c, char **argv) 
{ 
    printf ("%s\n", c > 1 ? argv[1] : "No Argument"); 
    return 0; 
} 
+0

我的測試用例是「program.exe」無參數「」。 –

0

的實現必須支持以下兩個main定義:

int main() { } 
int main(int argc, char* argv[]) { } 

這是實現定義是否支持任何其他定義。我不知道任何允許int main(char*)的實現(這是你的等價物)。

0

這將在程序名稱之後打印您在命令行中鍵入的所有內容,即使有空格也是如此。如果您在程序名稱後面輸入什麼內容,它不會崩潰。

#include <stdio.h> 
int main(int argc, char **argv) 
{ 
    for(int i=1; i<=argc; ++i) { 
     printf("%s\n", argv[i]); 
    } 
}