void* checkRow(void* in)
{
//pthread_mutex_lock(&count_mutex);
parameters* temp = (parameters*) in;
int row = temp->row;
int col = temp-> col;
int i = 0;
int j = 0;
for (i = row; i < SIZE; i++)
for (j = col; j< SIZE; j++)
{
printf("%d ", isdigit(temp->arr[i][j]));
if(isdigit(temp->arr[i][j]) && temp->arr[i][j] <= SIZE)
{
//pthread_mutex_unlock(&count_mutex);
return (void*) 1;
}
}
return (void*) 0;
}
由於某些原因,我試圖運行isdigit(temp->arr[i][j])
總是返回false而不是true。數組初始化爲所有數字。我在數組上運行了一個printf,它指示數組返回正確的結果,所以我不知道爲什麼isdigit不能將數組的元素識別爲數字。是int數組上的元素不返回true
陣列是結構
typedef struct
{
int row;
int col;
int arr[SIZE][SIZE];
}parameters;
*數組與所有數字初始化*你用數字對它們進行初始化裏ke'1',還是像''1''這樣的字符?你需要使用後者而不是前者來使'isdigit()'返回true。 –
我用整數初始化爲1。 – KhoaVo
這就是問題所在。您可以通過向它們添加「0」來將數字轉換爲它們的字符表示。 –