gpt4 book ai didi

c - 将用户输入添加到 C 中的数组

转载 作者:行者123 更新时间:2023-11-30 20:39:19 25 4
gpt4 key购买 nike

我正在尝试用 C 创建程序来读取用户输入。正确的用户输入是[数字][空格][数字]。我读取每个输入字符并检查是否正好有一个空格。当出现 '\n' 时,我需要将所有输入字符存储在数组中。问题是我只有在 '\n' 出现时才知道数组的大小。如何将输入写入数组?这是我的代码:

#include <stdlib.h>
#include <stdio.h>

int array_size=0;
char input;
int spaces=0;

int main (){
while ((input = getchar())!=EOF){
array_size++;
if(input==' '){ //if user input a space
spaces++;
}

if(spaces>1){
fprintf(stderr, "You can input only one space in row\n");
spaces=0;
array_size=0;
continue;
}
if(input=='\n'){ //if thre is only one space and user inputs ENTER
char content[array_size+1];

//here I know array size and need to add to array all chars that were inputed

content[array_size-1]=='\0'; //content is a string
if((content[0]==' ')||(content[array_size-2]==' ')){
fprintf(stderr, "You can't input space only between numbers\n");
spaces=0;
array_size=0;
continue;
}

//then work with array

spaces=0;
array_size=0;
}

}
exit(0);
}

最佳答案

您的代码已损坏。这是一个例子。以此为起点。

#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>

int main(void) {
char input[10]; // 10 is just an example size
int c; // current character read
int token_no = 0;
// we read until EOF
while ((c = getchar()) != EOF) { //read chars while EOF
if(c == '\n') // or newline
break;
if (token_no % 2 == 0) { // if no of token is even, then we expect a number
if (isdigit(c)) {
input[token_no++] = c;
} else {
printf("Expected number, exiting...\n");
return -1;
}
} else {
if (c == ' ') {
input[token_no++] = c;
} else {
printf("Expected space, exiting...\n");
return -1;
}
}
}
input[token_no++] = '\0'; // here you had ==, which was wrong

printf("%s\n", input);

return 0;
}

输出1:

1 2 3
1 2 3

输出2:

123
Expected space, exiting...

输出3:

1       <- I have typed two spaces here
Expected number, exiting...

关于c - 将用户输入添加到 C 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26828814/

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