将char Array一个点的内容向左移动

时间:2017-02-11 22:13:18

标签: c

我有一个实验室用于我的软件开发课程,并且在C语言方面很新 - 但我更了解Java。我试图将数组的内容向左移动一个点,但输出似乎与用户输入相同。发现任何问题?

$('pre').html();

输入:#include <stdio.h> int main(void) { char telephoneNumber[13]; int i; printf("Enter a telephone number [(xxx)xxx-xxxx]: "); scanf("%c", &telephoneNumber); for (i = 0; i < 11; i++) { telephoneNumber[i] = telephoneNumber[i + 1]; } printf("%c", telephoneNumber); return 0; }

输出:(902)494-9999

1 个答案:

答案 0 :(得分:1)

我对你的程序进行了一些细微的修改,它对我有用。 我不确定为什么它不适合你。

#include <stdio.h>
#include <string.h>

int main(void)
{
    char telephoneNumber[20];
    int i;
    int len;

    printf("Enter a telephone number [(xxx)xxx-xxxx]: ");
    scanf("%19s", telephoneNumber);

    len = strlen(telephoneNumber);
    for (i = 0; i < len; i++)
    {
        telephoneNumber[i] = telephoneNumber[i + 1];
    }

    printf("%s\n", telephoneNumber);
    return 0;
}

我做了两处修改:

  • 我将您的printfscanf格式更改为%s
  • 我改变你的左移循环来操作字符串的实际长度(为了以防万一,我增加到最大值为20)

你可能没有意识到的一个微妙之处:C中的字符串由一个(通常是不可见的)nul字符终止,表示为'\0',移动该字符很重要左边连同琴弦的其余部分。 (但是你的代码移动它,无论你是否意识到这一点,所以这不是问题所在。)

相关问题