gpt4 book ai didi

c - 将用户输入的字符分配给变量

转载 作者:太空宇宙 更新时间:2023-11-04 04:37:49 25 4
gpt4 key购买 nike

我在将用户输入的 char 成功存储到变量时遇到了一些问题,然后需要在程序的不同部分使用该变量。

有问题的程序应该做以下事情:

  • 获取一组用户输入的值
  • 将这些值放入一个预定大小的数组中
  • 提示用户是否想查看数组
  • 如果为“Y”,则漂亮地打印数组。

我将在这里以代码片段的形式向您展示程序的第二部分,因为第一部分(将值放入数组中)工作正常:

char input, confirm;
printf("Would you like to view the array? Y/N: ");
while ((input = getchar()) != EOF){
confirm = putchar(input);
if (confirm == 'Y'){
printf("[");
for (i = 0; i < maxvals; i++){
if (i != maxvals - 1){
printf("%d,", A[i]);
}
else{
printf("%d", A[i]);
}
}
printf("]");
}
printf("\n");

显然所有变量都是预先声明的。第 2 行和第 3 行是我现在遇到问题的地方。

当我尝试运行该程序时,我得到:

$ arrays.exe
Enter as many as 10 values, ^D to end
1 2 3
^D
3 values read into array
Would you like to view the array? Y/N: ♦
Y
Y

注意程序只是重复用户输入的内容。我也试过这个(代替 while 循环):

confirm = getchar();

但这只是终止程序。我还担心我的 if (confirm == "Y") 行不起作用,但根据我以前的编程经验,我认为它应该起作用?

我很确定我已经提供了所有必要的代码,但如果您想要整个程序,请告诉我,以便我进行编辑。

编辑:

没有人提到scanf。它解决了这个问题。这是供将来引用的工作代码:

while (scanf("%c", &confirm) == 1){
if (confirm == 'Y'){
printf("[");
for (i = 0; i < n; i++){
if (i != n - 1){
printf("%d,", A[i]);
}
else{
printf("%d", A[i]);
}
}
printf("]");
break;
}
}
return 0;

最佳答案

你说它不起作用,但你没有说不起作用的症状是什么。这可能会有所帮助。无论如何,我认为有两件事可能存在问题:

  1. putchar(input) 没有做任何有用的事情。 putchar 不会将值写入变量(您正在尝试分配给 confirm),它会写入程序的标准输出(完全不是一回事)。我认为您根本不想使用 putchar
  2. 如果 confirm 是一个 char,您要与 'Y' 比较,它是一个字符,而不是 "Y ",这是一个字符串。查看 confirm 的声明方式可能会有所帮助。

关于c - 将用户输入的字符分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29325516/

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