我有这样的代码将argv
存储到动态分配的int
数组中:
int *data; // pointer to array of integer numbers
int size; // size of data array
int main(int argc, char* argv[]) {
// initialize array data
size=argc;
printf("%dSize=\n",size);
printf("%d\n",argc);
data=(int*)calloc(size,sizeof(int));
int i=0;
for (i=1;i<size;i++)
{
data[i]=argv[i];
printf("%d\n",data[i]);
}
for (i=1;i<argc;i++)
{
printf("%d\n",argv[i]);
}
return 0;
}
当我在命令行中运行时:
./sumprime 5 1 2 3 4
它打印:
6Size=
6
15311660
15311662
15311664
15311666
15311668
15311660
15311662
15311664
15311666
15311668
不是我预期的5 1 2 3 4
数组。如何从int
存储argv
数组,然后将其打印出来?
答案 0 :(得分:2)
应该是:
data[i]=atoi(argv[i]);
记住命令行参数是字符串。因此,即使您在命令行中传递一个整数,也需要将其转换为整数。
答案 1 :(得分:1)
public partial class Form1 : Form
{
int r = 0;
public Form1()
{
InitializeComponent();
}
private void btn_Number_Click(object sender, EventArgs e)
{
Random random = new Random();
List<int> BingoNumbers = new List<int>();
for(int i = 0; i < 91; i++)
{
BingoNumbers.Add(i);
}
r = random.Next(BingoNumbers.Count);
BingoNumbers.RemoveAt(r);
RichTextBox1.Text = BingoNumbers[r].ToString();
RichTextBox2.Text = BingoNumbers[r].ToString();
}
}
是一个指向字符串的指针数组;参数不是整数,它们是包含ASCII字符的空终止字符串;如果您想将它们解释为整数值,则需要执行转换:
考虑:
argv
您的输入,输出:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv )
{
int size = argc - 1 ;
int* data = (int*)calloc( size, sizeof(int) ) ;
printf( "Size = %d\n", size ) ;
// For each argument...
for( int i = 0; i < size; i++)
{
// convert string to an integer
sscanf( argv[i + 1], "%d", &data[i] ) ;
// Output the argument string and its converted value
printf( "\"%s\" -> %d\n", argv[i + 1], data[i] ) ;
}
return 0;
}
看到调用时会发生什么可能是有益的:
Size = 5
"5" -> 5
"1" -> 1
"2" -> 2
"3" -> 3
"4" -> 4
其中给出了以下输出:
./sumprime 5 1 hello 3 4