假設我有一個變量:閱讀數在C
char variableName[256];
我如何可以存儲在命令行中輸入,如果我給號碼列表像10 11 12
..等我使用
fgets(variableName, sizeof(variableName), stdin)
及其將其直接插入(1,0,1,1,
等)而不是在空間之間的轉換(10, 11, 12,
等)。
我是否應該使用scanf
,並基於空白存儲;只是不確定的語法/什麼是常見的?
謝謝你們!
假設我有一個變量:閱讀數在C
char variableName[256];
我如何可以存儲在命令行中輸入,如果我給號碼列表像10 11 12
..等我使用
fgets(variableName, sizeof(variableName), stdin)
及其將其直接插入(1,0,1,1,
等)而不是在空間之間的轉換(10, 11, 12,
等)。
我是否應該使用scanf
,並基於空白存儲;只是不確定的語法/什麼是常見的?
謝謝你們!
您不必調用fgets或任何其他函數,因爲傳遞給程序的參數在argv []數組中。您可以直接存取權限他們只是
int i = atoi(argv[1]);
不過還好,你應該使用sscanf
提供錯誤檢查:
if (sscanf (argv[1], "%d", &i) != 1) { printf ("error - not an integer"); }
或strtol()
這下/溢出預防:
char *endptr, *str;
str = argv[1];
long val = strtol(str, &endptr, 10);
如果你知道有多少個nu mbers將inputed然後使用sscanf
使用fgets
後或直接使用scanf
(不推薦)
int var[NO_OF_INPUTS];
fgets(variableName , sizeof variableName , stdin);
sscanf(variableName , "%d %d %d ... %d" , &var[0] , &var[1] , ... , &var[NO_OF_INPUTS - 1]);
,如果你不知道輸入的號碼,然後你就可以說計算有多少數字是通過計算進入了一個功能空白的fgets
後的數字,那麼也許使用strtok
空白和strtol
之間跳轉到該轉換爲數字
即時通訊使用這個,只是得到一個核心轉儲;感謝您的建議,但! – ShaiwanGhazazani 2014-10-06 16:06:46
哪一個,'strtok'或'sscanf'? – 2014-10-06 16:18:03
哦,是的,我忘了'&'啞巴錯誤,現在嘗試 – 2014-10-06 16:19:07
如果您收到的命令行值,那麼你可以簡單地通過使用argc
,argv
和strtol
做的工作。無需創建新變量!
argc
包含傳遞給程序的命令行參數的數量。
argv
是參數數組。
我希望這個代碼將有助於:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i;
char *p;
long int li_arr[argc];
if (argc==1)
{
puts("No arguments provided");
exit(1);
}
for(i=1;i<argc;i++)
{
li_arr[i] = strtol(argv[i],&p,10);
printf("%ld\n",li_arr[i]);
}
return 0;
}
'fgets'不會刪除空白。你能舉一些例子代碼和你的輸入嗎? – mafso 2014-10-06 15:55:50
「* ...將其直接轉換爲(1,0,1,1等)... *」請詳細說明這一點。只有1秒和0秒?它用逗號代替空格? – alk 2014-10-06 16:07:58
hey alk!所以如果我輸入30,4,10的字符variableName [256];將它存儲爲(3,0,4,1,0),所以它不僅存儲1和0。什麼即時通訊試圖使它存儲(30,4,10)。謝謝! – ShaiwanGhazazani 2014-10-06 16:17:02