我是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);