Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.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_Cs50 - Fatal编程技术网

C 为什么我的输出是分段失败?

C 为什么我的输出是分段失败?,c,cs50,C,Cs50,我试图用C做一个密码,我在2个数组中循环,将句子字符与字母ACSII值进行比较,然后将这些字母更改为加密的字母值。以下是到目前为止我得到的信息: #include <cs50.h> #include <stdio.h> #include <string.h> int main(void) { string test = "JTREKYAVOGDXPSNCUIZLFBMWHQ"; string sentence = "DEEEATSXYLAPH

我试图用C做一个密码,我在2个数组中循环,将句子字符与字母ACSII值进行比较,然后将这些字母更改为加密的字母值。以下是到目前为止我得到的信息:

#include <cs50.h>
#include <stdio.h>
#include <string.h>

int main(void)
{
    string test = "JTREKYAVOGDXPSNCUIZLFBMWHQ";
    string sentence = "DEEEATSXYLAPHONEELEPHANTTY";
    int alphabet[26];

    for (int i = 0; i < 26; i++)
    {
        alphabet[i] = i + 65;
    }

    for (int i = 0; i < 26; i++)
    {
        for (int j = 0; j < 26; j++)
        {
            if (sentence[i] == alphabet[j])
            {
                sentence[i] = test[j];
            }
        }
    }

    printf("%s", sentence);

}
#包括
#包括
#包括
内部主(空)
{
字符串测试=“JTREKYAVOGDXPSNCUIZLFBMWHQ”;
字符串语句=“deeatsxylaphoneelephanty”;
int字母[26];
对于(int i=0;i<26;i++)
{
字母表[i]=i+65;
}
对于(int i=0;i<26;i++)
{
对于(int j=0;j<26;j++)
{
if(句子[i]==字母[j])
{
句子[i]=测试[j];
}
}
}
printf(“%s”,句子);
}

因此,输出为“分段失败”。我觉得我已经正确地完成了,但这不是我第一次感到自信,但看起来很愚蠢

valgrind
可轻松追踪此问题:

==29905== Process terminating with default action of signal 11 (SIGSEGV)
==29905==  Bad permissions for mapped region at address 0x10A01F
==29905==    at 0x109207: main (sf.c:23)
这是语句
语句[i]=test[j]
,它正试图写入
const char*
(检查
字符串的
typedef
)。要修复它,您必须为
语句
提供自己的数据副本,如下所示:

char sentence[] = "DEEEATSXYLAPHONEELEPHANTTY";

现在任务正在写入本地数据,至少在我的系统上,
valgrind
(和asan)可以毫无怨言地运行。

valgrind
可以轻松跟踪此问题:

==29905== Process terminating with default action of signal 11 (SIGSEGV)
==29905==  Bad permissions for mapped region at address 0x10A01F
==29905==    at 0x109207: main (sf.c:23)
这是语句
语句[i]=test[j]
,它正试图写入
const char*
(检查
字符串的
typedef
)。要修复它,您必须为
语句
提供自己的数据副本,如下所示:

char sentence[] = "DEEEATSXYLAPHONEELEPHANTTY";

现在作业正在写入本地数据,至少在我的系统上,
valgrind
(和asan)毫无怨言地运行。

字母表的大小是多少?这段代码在你的系统上编译吗?是的,我在处理事情时更改了数组大小。只是把它改回以前的运行方式。至于运行的代码,我是为一门cs50课程而做的,这个库添加了一些不太普通的东西。我不知道你是否可以从你的编辑器访问这个库。
字母表的大小是多少?这段代码在你的系统上编译吗?是的,我在处理事情时更改了数组大小。只是把它改回以前的运行方式。至于运行的代码,我是为一门cs50课程而做的,这个库添加了一些不太普通的东西。我不知道您是否可以从编辑器访问该库。如果
const char*
是该类型,则代码应该无法编译。您可能会发现它是
char*
如果
const char*
是类型,那么代码应该无法编译。您可能会发现它是
char*