删除字符串的最后一个字符

时间:2016-05-30 13:28:14

标签: c c-strings gets

为什么这段代码不起作用?

<script src="//cdn.tinymce.com/4/tinymce.min.js"></script>

<script src="systemjs.config.js"></script>
<script>
    System.import('app').catch(function(err) {
        console.error(err);
    });

</script>

虽然它运行正确,但当我使用scanf函数读取字符串时,但是 为什么它没有得到?

2 个答案:

答案 0 :(得分:3)

scanf("%s", pStr)会跳到第一个非空格字符而gets没有。

在第一个scanf之后,尾随换行符仍在输入缓冲区中,这样当您调用gets时,结果为空行,除非您在数字后面输入了额外的字符。

请注意,gets由于严重的安全漏洞而被标记为过时。 建议将gets(var)的任何使用替换为fgets(var, length, stdin)

答案 1 :(得分:1)

因为数组是基于零的,并且(假设输入有效并且正确的长度,假设您的代码不应该进行)*(ptr + len)已经包含\0并且您只是覆盖它。您打算覆盖ptr[len-1]