如何从C中的字符串中删除最后一个字符?

时间:2019-09-30 16:29:43

标签: c

我只是想从字符串中删除最后一个字符。这不是做作业,所以您可以帮助我。 (C编程)

我用Google搜索了不同的内容。这看起来很简单,但是无论我尝试了什么,都行不通。

char cc[100] = "no u)";

我要删除')'

没有错误消息,因为我只是想在不使用')'的情况下打印cc


printf("\n Enter a word\n");
char scan[100];
char* cc;
fgets(scan, 100, stdin);
if (strncmp(scan, "encrypt", 7) == 0)
{

    cc = scan + 8;
    printf("%s", cc);
    cc[strlen(cc)-1] = '\0';
    printf("%s", cc);
}

2 个答案:

答案 0 :(得分:1)

this answer中,您可以用空终止符\0替换数组中的“最后一个”字符。

#include<string.h>

char cc[100] = "no u)";
cc[strlen(cc)-1] = '\0';

请注意,如果cc为空,则会导致未定义的行为-您可能想确保strlen首先为非零。

Try it here!

答案 1 :(得分:0)

int main(void)
{
    char cc[100] = "no u)";

    printf("%.*s", strlen(cc)-1, cc);
    return 0;
}

IDEOne Link

输出

Success #stdin #stdout 0s 4400KB
no u

在代码中,您的字符串是:"encrypt(how are you)\n\0"。 当您尝试用\0替换最后一个字符时,您将覆盖\n,而不是最终的)

因此,您的字符串变为:"encrypt(how are you)\0\0",但仍具有最后的)

在编写代码时,请确保您考虑了\n