int main() { // 定义字符串缓冲区,并接收用户输入 char s[10]; int len, j=0, k = 0; double data[62] = { 0 }; char database[70]; InputBox(s, 100, _T("请输入数字"), _T("test"), NULL, 500, 500, false); len = strlen(s); /*while (len--) { if (!(s[len] == ' ')) { printf("%c", s[len]); } else { len--; printf("\n"); } }*/ for (int i = 0; i < len; i++) { while (!(s[i] == ' ')) { database[j++] = s[i]; i++; } data[k++] = atof(database); printf("%lf", data[k]); } getchar(); return 0; }怎么改正
时间: 2024-03-09 16:48:02 浏览: 40
在这段代码中,每次循环时都需要重新初始化 `database` 数组和 `j` 变量,否则会导致数据重复,同时也需要保证 `k` 变量能正确递增。以下是修改后的代码:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char s[100]; // 定义字符串缓冲区,并接收用户输入
int len, j, k = 0;
double data[62] = { 0 };
char database[70];
InputBox(s, 100, _T("请输入数字"), _T("test"), NULL, 500, 500, false);
len = strlen(s);
for (int i = 0; i < len; i++) {
j = 0; // 每次循环时重新初始化数组和变量
memset(database, 0, sizeof(database));
while (!(s[i] == ' ') && i < len) { // 需要判断 i 是否小于 len,否则可能会越界
database[j++] = s[i++];
}
data[k++] = atof(database); // 将字符串转换成浮点数
}
for (int i = 0; i < k; i++) {
printf("%lf ", data[i]);
}
getchar();
return 0;
}
```
需要注意的是,该代码中使用了 `atof()` 函数将字符串转换成浮点数。如果需要使用整数,可以使用 `atoi()` 函数,但需要注意这两个函数的返回值类型。
阅读全文