#include <stdio.h>
int main(char sendbuf[100])
{
printf (sendbuf);
return 0;
}
不知何故,當我嘗試使用它時,這個非常基本的程序崩潰了,它意味着打印任何鍵入的參數。如果我刪除行「printf(sendbuf);」墜毀消失了。printf導致崩潰
#include <stdio.h>
int main(char sendbuf[100])
{
printf (sendbuf);
return 0;
}
不知何故,當我嘗試使用它時,這個非常基本的程序崩潰了,它意味着打印任何鍵入的參數。如果我刪除行「printf(sendbuf);」墜毀消失了。printf導致崩潰
您的第一個參數必須是整數,而不是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命令行中的第一個參數。
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]開始,如果有的話。
爲什麼選擇C++?這個問題被標記爲C. – effeffe
在C++之前被標記了,我已經更新了我的答案 – billz
我正在使用C++,我的問題被其他人編輯... – user1882226
main
的第一個參數是參數的數量。第二個參數是一個字符串數組。第二個參數的第一個元素(索引0)是你的程序的名稱:
#include <stdio.h>
int main(int c, char **argv)
{
printf ("%s\n", c > 1 ? argv[1] : "No Argument");
return 0;
}
我的測試用例是「program.exe」無參數「」。 –
的實現必須支持以下兩個main
定義:
int main() { }
int main(int argc, char* argv[]) { }
這是實現定義是否支持任何其他定義。我不知道任何允許int main(char*)
的實現(這是你的等價物)。
這將在程序名稱之後打印您在命令行中鍵入的所有內容,即使有空格也是如此。如果您在程序名稱後面輸入什麼內容,它不會崩潰。
#include <stdio.h>
int main(int argc, char **argv)
{
for(int i=1; i<=argc; ++i) {
printf("%s\n", argv[i]);
}
}
program.exe'沒有提供參數' –
@JiveDadson:是的。我最初跳過了參數檢查,以保持示例儘可能簡單。無論如何,別人修改答案,我調整了一下,所以這是解決。 – RonaldBarzell