字符串比较功能正常

时间:2013-11-12 22:04:38

标签: c pointers strcmp

我正在编写一个程序,必须使用主要指针使用strcmp函数。没有任何用户输入。没有菜单,它必须在主函数中作为参数执行参数。我的问题是我是否正确调用strcmp函数?

int main(int n, char **p, char **choice)
{
int i, x, A[100];


if (strcmp(*choice, "mode")==0){

1 个答案:

答案 0 :(得分:0)

您的代码将编译并且语法正确,但我不确定逻辑是否是您想要的。

通常main有2个或3个参数,通常写为int argc, char **argv, char ** envp(如果只有2个,则它是前2个)。可以将它们重命名为n,p和choice,但是你需要知道它们的含义。

  • argc(“n”)是argv数组中的字符串数,0是索引的。总会有至少一个参数 - 程序的名称。在命令行上传递的参数从argv[1]开始。

  • argv是所有参数,包括程序名称。数组将从0变为argc - 1

  • envp是一个列出所有环境设置的字符串数组。它以NULL条目作为最终条目终止。

如果您的任务是将参数作为参数执行,那么您可能会对循环遍历argv中的字符串感兴趣。你会想要这样的东西:

int i = 1;
for (i = 1; i < argc; ++i) {
    if (strcmp(argv[i], "mode") == 0) {

当然,如果你想保留变量名,只需替换它们:

int i = 1;
for (i = 1; i < n; ++i) {
    if (strcmp(p[i], "mode") == 0) {

所以,是的。您对strcmp的使用在语法上是可以接受的。但它可能不会做你想要的。

祝你好运!

顺便说一下,如果你需要循环访问envp,你可以按如下方式进行:

int i = 0;
while (envp[i] != NULL) {
    if (strcmp(envp[i], "mode") == 0) { // or whatever else you needed to do.