当我在制作我的程序时,我得到了一个叫做Segmentation Fault的错误类型。
#include <cs50.h>
#include <string.h>
#include <stdio.h>
int main(int argc, string argv[])
{
char i = strlen(argv[2]);
if (argc == 2)
{
printf("%i %s %hhd", argc, argv[2], i);
}
}
我使用这些命令运行这个程序
make substitution
接着
./substitution abcdefghijklmnopqrstuvwxyz
在此我们必须添加一个 26 字的键,在上一行中是 a 到 z。
知道解决的请帮忙
如果你调用你的程序:
./substitution abcdefghijklmnopqrstuvwxyz
argc
将是 2,并且argv
将是一个包含 3 个指针的数组:
argv[0]
指向 string ./substitution
,argv[1]
指向 string abcdefghijklmnopqrstuvwxyz
,并且argv[2]
为 NULL。如果您尝试通过调用 来计算 NULL 的长度strlen(argv[2])
,那将是一个错误。您不得将 NULL 传递给strlen
. 我认为您的错误只是错误地索引了 argv 数组。C 中的数组是从零开始的。如果你想计算第一个参数的长度,你想使用argv[1]
,而不是argv[2]
:
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char *argv[])
{
int rc = EXIT_FAILURE;
if( argc > 1 ){
size_t i = strlen(argv[1]);
printf("%i %s %zd\n", argc, argv[1], i);
rc = EXIT_SUCCESS;
}
return rc;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句