C/C++指针和数组帮助
C/C++ Pointers and Arrays help
我有下面的C++代码,但我似乎无法让它工作。我要做的是从命令行中读取许多条目,这些条目由('|'(管道字符分隔,然后用空格分隔得到的字符串。
eg.
mkdir C:/unixcode/shells|cd D:/margins/code | pwd| finger kobojunkie | last -l kobojunkie
但到目前为止,我遇到了一些错误,比如关于声明指针的大小:
初始化程序无法确定
argv2
的大小无法将参数1的char**
转换为char*
到char strtok(char*, const char*)
int main(int argc, char *argv[])
{
char * pch;
pch = strtok (argv,"|");
//parse the contents of the generated arrays
while (pch != NULL)
{
printf ("%sn",pch);
char * argv2[] = pch;
char * subpch = strtok(argv2," ");
while (subpch !=NULL)
{
printf ("%sn",subpch);
subpch = strtok (NULL, " ");
}
pch = strtok (NULL, " ");
}
return 0;
}
argv的类型是char**
,而不是char*
,因此不能将其传递给strtok。请改用argv[1],但请先检查argc>=2。
或者,由于这被标记为c++,所以使用stl来拆分字符串,例如
void split( const std::string& s, char delim, std::vector<std::string>& elems )
{
std::stringstream ss( s );
std::string item;
while( std::getline( ss, item, delim ) )
if( !item.empty() )
elems.push_back( item );
}
int main( int argc, char *argv[] )
{
if( argc == 2 )
{
std::vector< std::string > elements;
split( argv[ 1 ], '|', elements );
//elements now contains all items..
}
}
cmd.exe
或Linux中的bash
(。该shell获取在命令行中编写的所有内容,并对其进行解析并执行指定的命令。
除非您正在编写shell,否则您永远无法在编写的程序中看到示例命令行的"|"
。它们从shell中得到有效处理,并从发送到程序的参数中删除。
在中
mkdir C:/unixcode/shells|cd D:/margins/code | pwd| finger kobojunkie | last -l kobojunkie
shell调用以下5个命令,每个命令都具有指定的参数
- mkdir C:/unixcode/shells
- cd D:/parings/code
- pwd
- 手指吸毒者
- 最后一次吸毒
请注意,没有任何程序接收到"|"
。
如果您确实在编写shell,那么命令行在argv
数组中不可用。这取决于您在shell中管理输入的方式。
argv
是数组指针的数组。您不能按原样将其传递给strtok:您需要在循环中传递其元素
for (k = 1; k < argc; k++) {
pch = strtok(argv[k], "|");
/* ... */
}
另外:您确定要使用"|"
进行分隔吗?这个字符对shell有特殊的意义,通常不会出现在程序中。除非你调用你的程序,否则他们逃跑了,例如
bash$ ./a.out 'one|two|three' 'four|five|six'
argv
不是字符串。argv
是字符串的数组。strtok
接受一个字符串,因此您不能向它传递一个字符串数组并期望它做一些有意义的事情。
argv
数组的每个字符串元素都是一个单独的命令行参数,除了第一个是可执行文件的名称。因此,您应该做的是在每个字符串条目中查找"|",并采取相应的行动。
相关文章:
- 需要帮助将结构数组传递给函数
- 无法将 2D 数组传递到 c++ 中的帮助程序函数中
- 需要类 2D 数组 (C++) 的帮助
- 需要关于如何将我的随机数数组连接到冒泡排序的帮助
- C++指针/数组(我现在完全困惑,真的需要帮助)
- C++ RapidJson 帮助反序列化数组对象
- 需要帮助从数组中获取特定值并将它们从最高到最低排序
- 需要帮助理解 2D 数组并将其传递到函数中
- 需要帮助比较属于类的数组
- 我需要使用与课程的数组的帮助
- 需要帮助显示排序的数组值
- 谁可以帮助解释我的代码中出了什么问题.计算C ++中的数组
- 试图将字符串变为char数组,请帮助我仅在数组中获得所需的字符
- 需要帮助传递数组和输入数组
- 在将数组与字符数组进行比较后需要帮助输出一次结果
- 需要帮助在二维数组c++中实现迷宫
- 需要有关使用 for 循环显示我的数组的帮助
- 帮助澄清我的老师要求我如何处理多维数组(c++)
- 需要帮助删除加载的数组并将其从计数中清除
- c++当循环在填充数组时没有正确终止时,希望能帮助退出此循环