我在编程方面绝对是全新的,我不知道如何解释我在这里做什么。
这件作品的全部目的是输入数值,然后以相同的顺序打印出来。现在我想在按'q'时退出输入值,所以我必须扫描字符,但是当我将它们分配回int数组时,值不一样。
希望这对你有意义,但无论如何都是我的代码:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 5000
define flush fflush(stdin)
main() {
int input[SIZE] = {0},i = 0;
int counter = 0;
char inputs, quit;
do {
system("cls");
printf("Input number ('q' to quit and display numbers entered): ");
flush;
scanf("%c",&inputs);
flush;
if (inputs == 'q')
quit = 'q';
else {
input[i] = inputs;
counter++;
i++;
}
} while (i < SIZE && quit != 'q');
for(i = 0; i < counter; i++){
printf("%i.%i\n", i + 1, input[i]);
}
system("pause");
}
我一直试图用自己的btw来做这件事,并且还在网上研究了一些有关字符的信息,但找不到任何可以帮助我的信息。非常感谢。
答案 0 :(得分:3)
你应该也不应该通过%c得到整数既不是意图的整数变量的char值,而是你应该接近这样的
i = 0;
do {
printf("Enter a number: ");
scanf("%d", &input[i]);
i++; counter++;
printf("Do you want to continue? (y/n) : ");
scanf("%c", &inputs);
} while(inputs == 'y');
或者你可以预先获得整数输入的数量并循环以获得那么多的整数。
答案 1 :(得分:0)
尝试(尽可能使用原始代码):
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define SIZE 5000
int main()
{
int input[SIZE] = {0},i = 0;
int counter = 0;
char inputs[32];
bool quite = false;
do
{
system("cls");
printf("Input number ('q' to quit and display numbers entered): ");
// read a string from user, then convert when appropr
fgets(stdin, sizeof(inputs), inputs);
if (inputs[0] == 'q')
{
quit = true;
}
else if ( isdigit(inputs[0]) )
{
input[i] = atoi(inputs); // this will disregard any ending \n
counter++;
i++;
}
}
while (i < SIZE && !quit);
for(i = 0; i < counter; i++)
{
printf("%i.%i\n", i + 1, input[i]);
}
system("pause");
}
答案 2 :(得分:0)
另一种变体。无论使用哪个空格,这个都会读入字符,因为它使用getchar()
而不是scanf()
。我不确定这是不是你想要的。好像你想要整数但是读字符。所以这个解决方案可能完全偏离基础。
#include <stdio.h>
#include <stdlib.h>
#define SIZE 5000
int main()
{
char input[SIZE] = {0};
int i = 0;
int counter = 0;
char inputs;
printf("Input number ('q' to quit and display numbers entered): ");
while (((inputs = getchar()) != EOF) && (counter < SIZE))
{
if (inputs == 'q')
break;
input[counter] = inputs;
counter++;
}
for(i = 0; i < counter; i++)
{
printf("%c\n", input[i]);
}
system("pause");
return 0;
}
如果你确实想要整体,那么这个应该有用。
请注意,atoi()
函数可用于将C字符串转换为int。
fgets()
函数用于从STDIN读取C字符串。但是,scanf("%s", input);
也适用于此处,而不是您使用的scanf("%c", &inputs);
。
#include <stdio.h>
#include <stdlib.h>
#define INPUT_SIZE 1000
#define SIZE 5000
int main()
{
char input[INPUT_SIZE] = {0};
int numbers[SIZE] = {0};
int i = 0;
int counter = 0;
while ((fgets(input, sizeof(input), stdin) != NULL) && (counter < SIZE))
{
system("cls");
printf("Input number ('q' to quit and display numbers entered): ");
if (input[0] == 'q')
break;
numbers[counter] = atoi(input);
counter++;
}
for(i = 0; i < counter; i++)
{
printf("%i\n", numbers[i]);
}
system("pause");
return 0;
}