Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分段故障C_C_Segmentation Fault - Fatal编程技术网

分段故障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的问题上看到一些东西?任何人都不应该回答此类问题,因为只制造噪音,不给其他人任何东西,而不是提问者。回答正确,但我认为回答已经回答的问题没有意义(基本上被接受)问题,尤其是回答的信息量略低于被接受的答案正确,但我不认为回答一个已经被回答(基本上被接受)的问题有什么意义,尤其是回答的信息量略低于被接受的问题