C 如何检查数组中的特定值

C 如何检查数组中的特定值,c,arrays,count,C,Arrays,Count,我有一个2D数组,它包含一个X值,只要用户在那里下一个棋子 我想用以下代码计算X值: void tableSum(int N, int table[N][N]) { int row,col; int count = 0; for(row=0; row<N; row++) { for(col=0;col<N;col++) { if(table[row][col] == 'x') { cou

我有一个2D数组,它包含一个X值,只要用户在那里下一个棋子

我想用以下代码计算X值:

void tableSum(int N, int table[N][N]) {
    int row,col;
    int count = 0;

    for(row=0; row<N; row++) {
        for(col=0;col<N;col++) {
            if(table[row][col] == 'x') {
                count++;
            }
        }
    }
    printf("\nNumber of X: %d\n", count);
}
void tableSum(int N,int table[N][N]){
int row,col;
整数计数=0;
对于(行=0;行
使用“x”结束输入


您使用“x”结束输入

您的代码存在许多问题。如果我们暂时忘记这些问题并查看当前代码,则可以尝试找出代码的作用

inputPosition
中,您似乎希望看到类似
“A1B4C4x”
的输入,将其更改为
“A1B4C4'\0'
,即将
x
更改为零终止

那么这里:

i=0;
while(positions[i]!=0){
    col=positions[i]-'A';
    i++;
    row=positions[i]-'1';
    i++;
    table[row][col]++;   // <------ obs
}
这将在输入位置放置一个
'x'
,而不是进行计数


此外,我建议您添加一些输入验证。目前,很容易使程序崩溃。例如,我可以将电路板大小设置为4,并输入
“xxxxxx”
这将使您的程序在
边界之外进行访问。

您的代码存在许多问题。如果我们暂时忘记这些问题并查看当前代码,那么我们可以尝试找出代码在做什么

inputPosition
中,您似乎希望看到类似
“A1B4C4x”
的输入,将其更改为
“A1B4C4'\0'
,即将
x
更改为零终止

那么这里:

i=0;
while(positions[i]!=0){
    col=positions[i]-'A';
    i++;
    row=positions[i]-'1';
    i++;
    table[row][col]++;   // <------ obs
}
这将在输入位置放置一个
'x'
,而不是进行计数


此外,我建议您添加一些输入验证。目前,很容易使程序崩溃。例如,我可以将电路板大小设置为4,并输入
“xxxxxx”
这将使您的程序在
边界之外进行访问。

我想我是在社区的帮助下发现问题的

正如我在帖子中所说,我试图找到“x”值,但似乎我没有将其分配到表中。早些时候,我在表中填充了数字:如果没有棋子,则为0;如果用户放下棋子,则为其他数字

我现在使用以下代码,它工作得非常好:

void tableSum(int N, char table[N][N]) {
    int row, col;
    int count = 0;


    for(row=0; row<N; row++) {
        for(col=0;col<N;col++) {
            if(table[row][col] != 0) {
                count++;
            }

        }
    }
    printf("\nNumber of X: %d\n", count);
}
void tableSum(int N,char table[N][N]){
int row,col;
整数计数=0;

对于(row=0;row我想我只是在社区的帮助下发现了问题

正如我在帖子中所说,我试图找到“x”值,但似乎我没有将其分配到表中。早些时候,我在表中填充了数字:如果没有棋子,则为0;如果用户放下棋子,则为其他数字

我现在使用以下代码,它工作得非常好:

void tableSum(int N, char table[N][N]) {
    int row, col;
    int count = 0;


    for(row=0; row<N; row++) {
        for(col=0;col<N;col++) {
            if(table[row][col] != 0) {
                count++;
            }

        }
    }
    printf("\nNumber of X: %d\n", count);
}
void tableSum(int N,char table[N][N]){
int row,col;
整数计数=0;

对于(row=0;row
int table[N][N]
应该是
char table[N][N]
,就我所见,您从未将值
'x'
分配到表中的某个位置。我找不到它!您可以
printf(“x |”)
但我看不到赋值。请指向您认为您在表中放置
'x'
的那一行,您正在使用
x
终止输入。因此,假设输入数组中仍保留该值,您最多将得到1个
x
inputPosition
函数看起来已损坏。您的输入是什么?可能是
int table[N][N]
应该是
char table[N][N]
据我所知,您从未将值
'x'
分配到表中的某个位置。我找不到它!您是
printf(“x |”)的
但我看不到作业。请指向您认为您在表中放置了
'x'
的那一行,您正在使用
x
终止输入。因此,假设输入数组中仍保留该行,您最多将得到1个
x
inputPosition
函数看起来已损坏。您的输入是什么?哦,我实际上想要的数一数一个棋子代表自己的次数。每0是“.|”,其他数字都是“x”。但把它改成“x”是个好主意,我甚至没想过!谢谢!哦。我实际上想数一数一个棋子代表自己的次数。每0是“.|”,其他数字都是“x”。但不改是个好主意o'x',我都没想过!谢谢!
void tableSum(int N, char table[N][N]) {
    int row, col;
    int count = 0;


    for(row=0; row<N; row++) {
        for(col=0;col<N;col++) {
            if(table[row][col] != 0) {
                count++;
            }

        }
    }
    printf("\nNumber of X: %d\n", count);
}