嘿,我試圖在整個地址陣列中迭代到字串,這是我到目前為止得到的:
int main()
{
char arr1[]="hello";
char arr2[]="ok";
char arr3[]="goodbye";
char arr4[] ="memo";
char *sumOfAdresses[]={arr1,arr2,arr3,arr4};
for(char**r=sumOfAdresses;*r!='\0';r ){
printf("fadixa");
printf("\n");
}
}
在這種情況下,我嘗試列印 4 次“fadixa”,但這種方法似乎不起作用,我不能將陣列的大小作為作業的一部分,這只是我作業的一半,它只是 main 中的一個測驗(這應該是一個只接受 **char 而沒有大小的方法)
uj5u.com熱心網友回復:
您可以使用sizeof運算子來獲取sumOfAdresses陣列中的專案數。您還可以使用陣列中的元素數列印元素。
方法一
#include <stdio.h>
int main()
{
char arr1[] = "hello", arr2[] = "ok", arr3[] = "goodbye", arr4[] = "memo";
char *sumOfAdresses[] = { arr1, arr2, arr3, arr4 };
for(char **pointer = sumOfAdresses; **pointer != '\0' ; pointer )
printf("%s\n", *pointer);
return 0;
}
方法二
#include <stdio.h>
int main()
{
char arr1[] = "hello", arr2[] = "ok", arr3[] = "goodbye", arr4[] = "memo";
char *sumOfAdresses[] = { arr1, arr2, arr3, arr4 };
size_t i = 0;
for(char *pointer = *sumOfAdresses; *pointer != '\0' ; pointer )
printf("%s\n", sumOfAdresses[i ]);
return 0;
}
方法三
#include <stdio.h>
int main()
{
char arr1[] = "hello", arr2[] = "ok", arr3[] = "goodbye", arr4[] = "memo";
char *sumOfAdresses[] = { arr1, arr2, arr3, arr4 };
size_t size = sizeof(sumOfAdresses) / sizeof(sumOfAdresses[0]);
for(size_t i = 0 ; i < size ; i)
printf("%s\n", sumOfAdresses[i]);
return 0;
}
該程式產生以下輸出:
hello
ok
goodbye
memo
uj5u.com熱心網友回復:
*r
是 char * 不是 char 的型別,不能與 char '\0' 進行比較
uj5u.com熱心網友回復:
只接受的方法
**char
常見的解決方案是將陣列的最后一個元素作為哨兵,一些在其他地方沒有使用的已知值——比如表示結束的空指標。
void method(char **r) {
while (*r) {
printf("<%s>", *r);
r ;
}
printf("\n");
}
打電話給
// char *sumOfAdresses[]={arr1,arr2,arr3,arr4};
char *sumOfAdresses[] = {arr1, arr2, arr3, arr4, NULL};
method(sumOfAdresses);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/405347.html
標籤:
