我正在编写一个函数,用于查找字符串中用逗号分隔的前 4 个整数。
例如,如果字符串是:
123,4,9.5,av4,3,g1,1,6
该函数会将数字提取到不同的数组中:123,4,3,1
一切正常,直到我尝试输入中间有空格的输入,这不应该被视为有效数字,但一旦碰到空格,循环就会停止。有解决办法吗?
我不允许使用除stdio.h.
这是我的代码:
int getParameters(int parameters[], int size) {
char input[100];
int indexInput = 0, indexParameters = 0;
int skip = 0, numberSeen = 0, negativeSeen = 0;
int i = 0;
scanf("%s", input);
for ( ; input[indexInput]!= '\0' && indexParameters < size; ++indexInput) {
if (input[indexInput] == ',' && skip == 1) {
parameters[indexParameters] = 0;
skip = 0;
negativeSeen = 0;
} else if (input[indexInput] == ',' && negativeSeen == 1 && numberSeen == 1) {
printf(ERROR);
return -1;
} else if (input[indexInput] == ','&& numberSeen == 1) {
numberSeen = 0;
indexParameters++;
} else if (input[indexInput] == ',') {
continue;
} else if (input[indexInput] == '-' && skip == 1) {
continue;
} else if (input[indexInput] == '-' && numberSeen == 0 && input[indexInput+1] != '-') {
negativeSeen = 1;
} else if (input[indexInput] <= '9' && input[indexInput] >= '0') {
parameters[indexParameters] *= 10;
parameters[indexParameters] += input[indexInput] - '0';
numberSeen = 1;
} else {
skip = 1;
}
}
if (skip == 1)
parameters[indexParameters] = 0;
while (i < 4) {
printf("%d,", parameters[i]);
++i;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |