我有这段代码:
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
答案 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就是第一个参数。