![](/img/trans.png)
[英]How to get the strings from a file and store in a 2D char array and compare that 2D char array with a string in C?
[英]C: How to put a String in every Spaces of a 2d char Array?
我正在用C編寫數獨求解器。構造函數是我有2d char Arrays。
第一個是實際的數獨,所有空(0)和完整點都從txt中保存。 文件,這也是我最后的輸出。
第二個也是2d char Array,第一個Array(第一個Array中的0)具有所有可能的值。 首先,我必須使用所有可能的值“ 123456789”來初始化第二個2d char數組,然后一個又一個地划掉,直到只剩下一個可能的值,並將該值保存在第一個Array中。
我沒問題 如何在2d char數組中放入“ 123456789”之類的字符串。
我嘗試了以下操作:
int j, k;
char possible_values[9][9];
for(j=0;j<9;j++){
for(k=0;k<9;k++){
possible_values[j][k] = "123456789";
}
}
for(j=0;j<9;j++){
for(k=0;k<9;k++){
printf("%c", possible_values[j][k]);
}
printf("\n");
}
和
int j, k;
char *possible_values[9][9];
char string [] = "123456789";
for(j=0;j<9;j++){
for(k=0;k<9;k++){
possible_values[j][k] = &string;
}
}
for(j=0;j<9;j++){
for(k=0;k<9;k++){
printf("%c", *possible_values[j][k]);
}
printf("\n");
}
但它只能打印出一個在每個空格中帶有9的9x9網格,因為它僅將一個char放入數組中,但是如何將整個String放入Array中?
編輯我有解決方案,感謝所有幫助!
要在2D數組的每個元素中存儲字符串的地址,請使用:
for(j=0;j<9;j++){
for(k=0;k<9;k++){
possible_values[j][k] = string; // & not needed
}
}
注意: possible_values
所有指針都指向相同的內存(它們不是字符串的副本),因此,如果更改了possible_values[1][2]
,則所有其他possible_values[j][k]
也都更改了。
要輸出字符串(所有字符串都是相同的,請參見上面的注釋),請使用循環:
char *possible_values[9][9];
for(j=0;j<9;j++){
for(k=0;k<9;k++){
printf("%s", possible_values[j][k]);
}
%s
表示字符串, %c
表示單個字符。
編輯:
我想您需要這樣的東西:
#include <stdio.h>
#include <string.h>
int main()
{
int j, k;
char possible_values[9][9][10]; // 10th element in 3rd dimension is for '\0'
char string [] = "123456789";
for(j=0;j<9;j++)
{
for(k=0;k<9;k++)
{
memcpy(possible_values[j][k], string, 10);
}
}
for(j=0;j<9;j++){
for(k=0;k<9;k++){
printf("%s ", possible_values[j][k]);
}
}
return 0;
}
現在,所有possible_values[j][k]
是獨立的數據,您可以從每個單元格的可能值中排除元素。
分配時使用一個字符而不是字符串。
char initters[] = "123456789";
for(j=0;j<9;j++){
for(k=0;k<9;k++){
possible_values[j][k] = innitters[k];
}
}
它是字符的二維數組。 從某種意義上說,數組的每個元素都是一個char。
possible_values
是一組數字值,以字符串表示。 所以這:
char *possible_values[9][9];
char initial_values [] = "123456789";
很好。
您只需要使用正確的語法來訪問和打印字符串。
for(j=0;j<9;j++){
for(k=0;k<9;k++){
//no need for &, as initial_values and possible_values are both strings
possible_values[j][k] = initial_values;
}
}
for(j=0;j<9;j++){
for(k=0;k<9;k++){
//printf with %s to print a string, no need for *
printf("The possible values of cell [%d][%d] are [%s]\n",
j, k,
possible_values[j][k]);
}
printf("\n");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.