首页 > 解决方案 > 每当我在输出端打印时出现额外字符

问题描述

我正在尝试将 FLAMES 程序作为作业执行,由于我无法在此处准确发布我的整个代码,我将输入似乎导致我错误的代码部分,因为每当我打印出一些东西时,都会出现意外输出附带的额外字符。

我使用了与此类似的代码:

int main(){
    char chari[100], temp[100];
    int i, c;

    printf("Enter a name: \n");
    scanf(" %[^\n]s", chari);

    for (i=1; chari[i]!='\0'; i++)
    {
        printf("%i\n", i);
    }

    c = i;

    for (i=0; i<c; i++)
    {
        printf("%i < %i\n", i, c);
        temp[i] = chari[i];
    }

    printf("%s \n", temp);

    return 0;

}

我已经调整代码几个小时了,但我似乎仍然找不到问题所在。我还在计算字符串中的字母数,以便稍后停止我的程序的某些部分。

输入:酷

预期输出:酷

实际输出:cool(<-t

标签: c

解决方案


您忘记复制终止空字符。

在您的第一个循环c = i;保存 0 字节的索引之后。在第二个循环中,您运行 until i < c,即您不复制该 0 字节而无需终止 nul 您的字符串只要在内存中找到另一个随机 0 字节即可。

在函数中,只有静态变量被初始化。因此,您的temp数组包含不确定的值,您不能依赖在需要的地方获得 0 字符。

您需要再复制 1 个字节。


推荐阅读