分段故障C
我读过关于分段错误的文章,但我仍然不知道为什么这个简单的代码会给我这个错误分段故障C,c,segmentation-fault,C,Segmentation Fault,我读过关于分段错误的文章,但我仍然不知道为什么这个简单的代码会给我这个错误 #include <stdio.h> #include <unistd.h> #include <sysexits.h> #include <stdlib.h> #include <string.h> int main ( int argc, char *argv[] ){ if( argc == 2 ){ doubl
#include <stdio.h>
#include <unistd.h>
#include <sysexits.h>
#include <stdlib.h>
#include <string.h>
int main ( int argc, char *argv[] ){
if( argc == 2 ){
double i;
char *finalPtr;
double h = strtod(argv[2], &finalPtr);
for(i=1;i<=h;i++){
printf( "\t%g\n", i);
}
return 0;
exit( EX_OK );
}
return 0;
}
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[]){
如果(argc==2){
双i;
char*finalPtr;
双h=strtod(argv[2],&finalPtr);
用于(i=1;i,因为您正在验证是否仅用于两个命令行参数
double h=strtod(argv[2],&finalPtr);
应该是:
double h=strtod(argv[1],&finalPtr);
这是因为:
argc==2
表示命令行参数的数量为2
,其中
在验证是否仅针对两个命令行参数时,第一个参数argv[0]将是可执行文件/二进制文件的名称,第二个参数argv[1]将是用户传递的命令行参数
double h=strtod(argv[2],&finalPtr);
应该是:
double h=strtod(argv[1],&finalPtr);
这是因为:
argc==2
表示命令行参数的数量为2
,其中
第一个参数argv[0]将是可执行文件/二进制文件的名称,第二个参数argv[1]将是用户传递的命令行arg,偏移量为0
任何时候,记住这一点
将其视为mem,+1*argv就足够了。偏移0
任何时候,记住这一点
把它当作记忆,+1*argv就足够了。谢谢。我被指针盯上了,我没有看到那个错误!@marckamoedo:Welcome@marckamoedo要和蔼可亲,接受这个答案,不仅你会奖励回答者,而且未来潜在的提问者也会看到这个问题的解决方案是正确的found@4rlekin我不能接受答案直到创建问题10分钟后。我尝试了两次。我正在等待接受答案:)(还剩2分钟)@4rlekin谁是未来的潜在提问者,会在标题分割错误为C的问题上看到一些东西?任何人都不应该回答这种问题,因为发出噪音,不要给别人任何东西,而是提问者。谢谢你。我被这些指针所迷惑,我没有看到那个错误!@marckamoedo:Welcome@marckamoedo要和蔼可亲,接受这个答案,不仅你会奖励回答者,而且未来潜在的提问者也会看到这个问题的解决方案是正确的found@4rlekin创建问题10分钟后我才能接受答案。我尝试了两次。我正在等待接受答案:)(还剩2分钟)@4rlekin谁是未来的潜在提问者,会在标题分割错误C的问题上看到一些东西?任何人都不应该回答此类问题,因为只制造噪音,不给其他人任何东西,而不是提问者。回答正确,但我认为回答已经回答的问题没有意义(基本上被接受)问题,尤其是回答的信息量略低于被接受的答案正确,但我不认为回答一个已经被回答(基本上被接受)的问题有什么意义,尤其是回答的信息量略低于被接受的问题