-7

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

#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]);
  }
  }
}
4

1 回答 1

3

您可能应该看看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]),但我怀疑这是导致问题的原因。

也许如果您提供了完整的跟踪信息,包括您的输入参数,就更容易发现问题。

于 2015-08-24T13:31:51.620 回答