无法打印阵列或分配给阵列

can't print the array or assign to it

本文关键字:阵列 分配 打印      更新时间:2023-10-16

下面的代码应该从用户那里获取输入char s1[] = "[1 -2.5 3;4 5.25 6;7 8 9.12]";并只取其中的数字,然后将它们转换为浮点数并将它们放入数组中但是当我尝试对数组进行检查时,它只打印数字

char s1[] = "[1 -2.5 3;4 5.25 6;7 8 9.12]";
char s2 [100] ;
float matrix [2][2];
char* cutter(char s[])
{
    char delim[] = " ;][";
    char *token = strtok(s,delim);
    while (token)
    {
        cout << token << endl;
        token = strtok(NULL,delim);
        for(int i=0;i<2;i++){
            for(int j=0;j< 2;j++){
                matrix [i][j]=strtof(token, NULL);
            }
        }
    }
return token;
}
void showmatrix(float m[2][2]){
    for(int i=0;i<2;i++){
            for(int j=0;j<2;j++){
                cout << m[i][j];
            }
        }
}
int main(){
    cutter(s1);
    showmatrix(matrix);
    //cin.getline(s2,100);
    //cutter(s2);
}

您的代码未在我的机器上运行。您应该按照其他人的建议更改循环条件,并在cutter函数中移动token = strtok(NULL,delim);代码的位置。

此代码运行:

#include <iostream>
using namespace std;
char s1[] = "[1 -2.5 3;4 5.25 6;7 8 9.12]";
//char s2 [100] ;
float matrix [2][2];
char* cutter(char s[])
{
    char delim[] = " ;][";
    char *token = strtok(s,delim);
    while (token)
    {
        cout << token << endl;
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 2; j++) {
                matrix[i][j] = strtof(token, NULL);
            }
        }
        token = strtok(NULL,delim);
    }
    return token;
}
void showmatrix(float m[2][2]){
    for(int i=0;i<2;i++){
        for(int j=0;j< 2;j++){
            cout << m[i][j];
        }
    }
}
int main(){
    cutter(s1);
    showmatrix(matrix);
    //cin.getline(s2,100);
    //cutter(s2);
}

此外,请尝试发布代码的完整示例,包括任何using声明和包含的标头。