无法将命令行参数复制到 C 中的字符指针
cannot copy command line argument to character pointer in C
我正在将命令行参数复制到我的字符指针。但它给我一个错误。
int main(int argc, char *argv[])
{
char *cmdarg;
if(argc>1)
strcpy(cmdarg, argv[1]);
else
cmdarg = NULL;
return 0;
}
这给了我
Segmentation fault (core dumped)
您没有在要复制表达式 argv[1]
.
指向的参数的位置分配内存
尝试以下方法
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char *cmdarg = NULL;
if( argc > 1 )
{
cmdarg = malloc( strlen( argv[1] ) + 1 );
if ( cmdarg != NULL ) strcpy( cmdarg, argv[1] );
}
// ... Some other code
free( cmdarg );
return 0;
}
如果你只想存储指针的值argv[1]
那么写
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char *cmdarg = NULL;
if( argc > 1 )
{
cmdarg = argv[1];
}
// ... Some other code
return 0;
}
cmdarg 是声明的未初始化指针。我们必须为 cmdarg 指向分配动态内存。下面是示例代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char *cmdarg;
cmdarg = malloc( 5 * sizeof(char));
if(argc>1)
{
strcpy(cmdarg, argv[1]);
printf("%s\n", cmdarg);
}
else
cmdarg = NULL;
free(cmdarg);
return 0;
}
当 运行 参数 ./a.out yes
为 yes
时输出。
注意:使用 strcpy() 时分配的大小不应小于。确保使用 strncpy()
我正在将命令行参数复制到我的字符指针。但它给我一个错误。
int main(int argc, char *argv[])
{
char *cmdarg;
if(argc>1)
strcpy(cmdarg, argv[1]);
else
cmdarg = NULL;
return 0;
}
这给了我
Segmentation fault (core dumped)
您没有在要复制表达式 argv[1]
.
尝试以下方法
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char *cmdarg = NULL;
if( argc > 1 )
{
cmdarg = malloc( strlen( argv[1] ) + 1 );
if ( cmdarg != NULL ) strcpy( cmdarg, argv[1] );
}
// ... Some other code
free( cmdarg );
return 0;
}
如果你只想存储指针的值argv[1]
那么写
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char *cmdarg = NULL;
if( argc > 1 )
{
cmdarg = argv[1];
}
// ... Some other code
return 0;
}
cmdarg 是声明的未初始化指针。我们必须为 cmdarg 指向分配动态内存。下面是示例代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char *cmdarg;
cmdarg = malloc( 5 * sizeof(char));
if(argc>1)
{
strcpy(cmdarg, argv[1]);
printf("%s\n", cmdarg);
}
else
cmdarg = NULL;
free(cmdarg);
return 0;
}
当 运行 参数 ./a.out yes
为 yes
时输出。
注意:使用 strcpy() 时分配的大小不应小于。确保使用 strncpy()