我怎么看c中带参数的数组是否为null

时间:2017-11-23 16:13:43

标签: c arrays null strcmp

我有这段代码:

import pandas as pd
import numpy as np

dfs = np.array_split(df.sample(frac=1), n)

我希望看到我的参数数组(args [])中有多少个字符串,问题是采取分段错误而我无法找到原因。 当我把NULL改为“null”时,我得到相同的结果,分段错误。 args [j]有问题吗?或者是我看不到的其他东西? 我在阵列中退出了弹跳? 我知道字符串从args [2]开始,所以这就是为什么我把j = 2放在代码中 我把头文件#include用到strcmp

2 个答案:

答案 0 :(得分:3)

"null"是一个没有特殊含义的字符串文字,NULL是一个空指针(你也可以为它写0),这就是你的意思,但将其作为字符串(与strcmp())进行比较并不会产生任何感。您想知道args[j]处的指针是否为空(然后,它不指向任何内容,因此它不是字符串)。

虽然你将 first 参数中的参数数传递给了main(),但这几乎总是更简单易用,C标准保证argv[argc]NULL确实int main(int argc, char **argv) { int i = 0; while (argv[i]) // or more explicit while (argv[i] != NULL) { puts(argv[i++]); // print this argument } } ,所以你的方法在正确实施时有效。例如:

argv[argc]

标准中的相关段落(引用N1570此处)为§5.1.2.2.1p2

  

[...]
   - var searchFieldParameter = searchField != null ? new ObjectParameter("SearchField", searchField) : new ObjectParameter("SearchField", typeof(string)); var searchTextParameter = searchText != null ? new ObjectParameter("SearchText", searchText) : new ObjectParameter("SearchText", typeof(string)); return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<ReasonCode>("XXXXXXX", searchFieldParameter, searchTextParameter); 应为空指针。

答案 1 :(得分:1)

主要功能有两个参数,

int main(int argc, char **argv);

argc计算参数数量

argv将参数作为2D数组中的字符串。

所以,你可以说:

if (argc == 1)
{
   printf("I'm having 0 arguments in Total");
}

第一个argc占用可执行文件的名称 - a.out - 。所以,如果你没有改变名字,a.out就是第一个参数。