gpt4 book ai didi

c - 如何将字符一个接一个地存储在数组中,直到用户输入字符以外的输入,然后在屏幕上重现相同的内容?

转载 作者:行者123 更新时间:2023-11-30 15:23:12 24 4
gpt4 key购买 nike

下面是我使用 a 存储用户的 a-z 字母表,然后在屏幕上重现相同内容的程序。

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

int main()
{
int const size = 26;
int index;
char arr[size]; // = "abcdefghijklmnopqrstuvwxyz";
printf("\nEnter the lowercase letters\n");
for (index = 0; index < size; index++){
scanf_s("%c", &arr[index]);
}

for (index = 0; index < size; index++){
printf("\n%c\n", arr[index]);
}
return 0;
}

虽然,对我来说直接存储它然后重现它更容易,但是每当我开始运行该程序时。它接受直到字母“m”,然后退出。我一直在试图找出错误,但找不到错误。我也在使用 Visual Studio 2013 Ultimate。另外,我正在一行又一行地输入输入。

最佳答案

这是因为 "%c" 说明符捕获了上一次调用留下的 '\n' 字符。

您可以通过使格式字符串忽略该字符来解决该问题。这是通过在 %c 之前添加显式空格来完成的,如下所示

scanf(" %c", &arr[index]);

但在这种情况下,如果您简单地使用 getchar()fgetc(),效果会更好,如下所示

size_t size = 26;
int chr;
size_t index;
char arr[size] = {0};

chr = getchar();
for (index = 0 ; ((index < size) && (chr != EOF)) ; ++index)
{
arr[index] = chr;
chr = getchar();
}
for (index = 0 ; index < size ; ++index)
printf("%c\n", arr[index]);

而且,显然您和其他人一样以错误的方式使用 scanf() ,即使在这种情况下不太可能出现问题,您也不会检查返回值scanf() 的,这是一个潜在的问题,因为如果输入 Ctrl+D 或“Ctrl+Z (Windows OS)”,则arr[index] 将未初始化。

关于c - 如何将字符一个接一个地存储在数组中,直到用户输入字符以外的输入,然后在屏幕上重现相同的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28916391/

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