我有一个实验室用于我的软件开发课程,并且在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
答案 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;
}
我做了两处修改:
printf
和scanf
格式更改为%s
你可能没有意识到的一个微妙之处:C中的字符串由一个(通常是不可见的)nul字符终止,表示为'\0'
,移动该字符很重要左边连同琴弦的其余部分。 (但是你的代码会移动它,无论你是否意识到这一点,所以这不是问题所在。)