在C中读取数字数组
Read array of numbers in C
我在网上练习算法题,遇到输入问题:
我会读书
1 2 3 -4 5
使用
int *p = (int*)malloc(sizeof(int) * size);
while(scanf("%d", p++) != EOF) {
//
}
但是问题的输入定义为
[1, 2, 3, -4, 5]
如何将这种格式的输入读入整数数组?
我相信这可以帮助您入门,
int main () {
int size = 5;
int *p = (int*)malloc(sizeof(int) * size);
char buf[200] = {0};
fgets(buf, 200, stdin);
char *token = strtok(buf, "[, ");
while(token) {
*p = atoi(token);
printf("next is %d,\n", *p);
token = strtok(NULL, ", ");
++p;
}
}
请注意,这假设您只输入了 5 个数字。
我认为最好将其作为字符读取,然后使用 atoi() 将其转换为数字。
char buffer[10],tmp;
这将作为 ASCII 数字的缓冲区
while(tmp!=']')
{
tmp=getchar();
if(tmp>=0x30 && tmp<0x3A)
buff[i++]=tmp;
else if(tmp!='[')
{
buff[i]='[=11=]';
arr[j++]=atoi(buff); //numbers stored to arr array
i=0;
}
}
此代码将从屏幕上读取每个字符并识别数字并将其添加到缓冲区。然后当遇到另一个字符时,我们知道这个数字已经完成并转换并存储到数组中。
我在网上练习算法题,遇到输入问题:
我会读书
1 2 3 -4 5
使用
int *p = (int*)malloc(sizeof(int) * size);
while(scanf("%d", p++) != EOF) {
//
}
但是问题的输入定义为
[1, 2, 3, -4, 5]
如何将这种格式的输入读入整数数组?
我相信这可以帮助您入门,
int main () {
int size = 5;
int *p = (int*)malloc(sizeof(int) * size);
char buf[200] = {0};
fgets(buf, 200, stdin);
char *token = strtok(buf, "[, ");
while(token) {
*p = atoi(token);
printf("next is %d,\n", *p);
token = strtok(NULL, ", ");
++p;
}
}
请注意,这假设您只输入了 5 个数字。
我认为最好将其作为字符读取,然后使用 atoi() 将其转换为数字。
char buffer[10],tmp;
这将作为 ASCII 数字的缓冲区
while(tmp!=']')
{
tmp=getchar();
if(tmp>=0x30 && tmp<0x3A)
buff[i++]=tmp;
else if(tmp!='[')
{
buff[i]='[=11=]';
arr[j++]=atoi(buff); //numbers stored to arr array
i=0;
}
}
此代码将从屏幕上读取每个字符并识别数字并将其添加到缓冲区。然后当遇到另一个字符时,我们知道这个数字已经完成并转换并存储到数组中。