gpt4 book ai didi

C 中的字符数组旋转错误 - 看不出原因

转载 作者:行者123 更新时间:2023-11-30 16:50:54 25 4
gpt4 key购买 nike

我正在尝试将数组向左旋转,我得到了非常奇怪的结果并且看不到错误,也许我需要 sleep 。非常感谢您的帮助

int main() {

int n;
scanf("%d", &n);
char ar[n];
char temp[n];

for (int i=0; i<n; i++) {
scanf("%c", &ar[i]);
}
int i;
temp[0] = ar[0];
for (int i=0; i<(n-1); i++) {
ar[0+i] = ar[1+i];
}
ar[n-1] = temp[0];

for(int i=0; i<n; i++){
printf("%c", ar[i]);
}

return 0;
}

输入示例:

7卡巴巴

示例输出:

cacbbb

最佳答案

您需要消耗在数字后输入的“空格”字符。您输入空格来标记第一个输入(数字)的结尾。然而,该空格或换行符保留在输入缓冲区中,并被下一个 scanf 消耗。因此,当您输入“cacbbba”时,代码收到的实际输入是“cacbbb”。您可以做的最快(虽然不是理想)的事情是在第二次输入开始之前消耗掉多余的字符。

getchar(); 放在第一个 for 循环开始之前。

这是示例工作程序:

int main() {

int n;
scanf("%d", &n);
char ar[n];
char temp[n];

for (int i=0; i<n; i++) {
scanf("%c", &ar[i]);
}
int i;
temp[0] = ar[0];
getchar(); //Consume the extra space or newline char.
for (int i=0; i<(n-1); i++) {
ar[0+i] = ar[1+i];
}
ar[n-1] = temp[0];

for(int i=0; i<n; i++){
printf("%c", ar[i]);
}

return 0;
}

关于C 中的字符数组旋转错误 - 看不出原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41986135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com