C 代码的分段错误



我是C的新手,并试图编写一个简单的Ceaser密码程序a->b->c等等。到目前为止,代码已编译,但我收到错误 139,当我查找此内容时,它显示为分段错误。我以前从未发生过这种情况,想知道是否有人可以看看我做错了什么?

您好,谢谢大家的帮助,139错误不再存在,我的更新代码在下面,:D工作。

#include <stdio.h>
int main()
{
char strg [100], ch;
int i;
printf ("Enter a stringn");
scanf ("%s" , strg);
for (i = 0; strg [i] != '';  ++i)
{
ch = strg[i];
if (ch >= 'a' && ch <= 'z')
{
ch = ch + 1;
if(ch > 'z')
{
ch = ch - 'z' + 'a' -1;
}
strg[i] = ch;
}
}
printf ("The string is %s", strg);
return 0;
}

这是printf (“The string is %s, strg”);中的一个错字,您实际上没有提供%s的参数。

printf ("The string is %s", strg);

相反。

如果您使用函数scanf来扫描字符串,则很难告诉扫描字符的限制,因此如果您的数组有 100 个边界,请执行以下操作

scanf ("%99s" , strg);  // Leave one byte for null terminating character

也在这里

ch = &strg[i];

您正在将char*分配给char,删除&引用运算符(用于在此处获取变量地址(

ch = strg[i];

最后这个

printf ("The string is %s, strg");

会导致未定义的行为(一些未定义的数据将从堆栈中挑选(,我想你想做以下事情

printf ("The string is %s", strg);

相关内容

  • 没有找到相关文章

最新更新