gpt4 book ai didi

c - 为什么我的代码会出现段错误?

转载 作者:行者123 更新时间:2023-11-30 21:46:02 25 4
gpt4 key购买 nike

我的代码反复给出错误消息段错误,即使我不知道它是什么意思。我正在尝试创建凯撒密码,但我的代码不断给我错误消息。我不知道问题是什么,任何帮助将不胜感激。

#include <stdio.h>
#include<cs50.h>
#include<string.h>
#include<ctype.h>
void encrypt(int k,string text);
int main(int argc,string arcv[])
{
if(argc != 2)
{
printf ("Please return a vaild command line argument");
return 1;
}
else
{
printf("Enter your text here:");
string s = GetString();
int x;
x = (int) (arcv[1] - '0');
encrypt(x,s);
}
}


void encrypt(int k,string text)
{
if(k > 26)
{
k = k % 26;
}
for(int i = 0;i < strlen(text); i++)
{
if(isalpha(text))
{
printf("%c",text[i] + k);
}
else
{
printf("%c",text[i]);
}
}
}

最佳答案

您可能应该看看 https://en.wikipedia.org/wiki/Segmentation_fault .

基本上,这意味着您的代码正在尝试以无效的方式使用某个地址上的数据。 C 代码中的常见情况如下:

char * cptr = NULL ;
cptr = some_function_returning_null();
printf("%s\n"cptr);

指针 cptr 处的内存从未正确设置。尝试打印字符串将导致段错误。

在你的情况下,我认为 isalpha(text) 应该是 isalpha(text[i]),但我怀疑这是导致问题的原因。

如果您提供完整的跟踪(包括输入参数),也许会更容易发现问题。

关于c - 为什么我的代码会出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32182513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com