當聲明C中的陣列I可以寫int array[100]={0}
並將其分配0到所有索引。有什麼辦法可以用字符串做同樣的事情嗎?因爲當我寫char string[100]={'A'}
當我打印顯示「A」,而不是我想要的「AAAAA ..... A(99次),」該字符串僅指定「A」到第一index.And。我不想用循環來分配所有的索引'A'。那麼我能做什麼?聲明一個整串具有單個字符內
回答
它不是在標準,但一些編譯器(包括gcc和鐺,我和測試它在我的系統上)允許這樣的:
#include <stdio.h>
int main(){
char str[100] = {[0 ... 98] = 'A'};
str[99]='\0'; // this line is really not necessary, since default is 0 and I just wrote it for clarity
printf("%s\n", str);
return 0;
}
它會在C99或gnu gcc 5.1之前工作??? ??? btw thnx。 – TotallyUselessCoder
它是GNU擴展的一部分,該鏈接是gcc 4.1.2的文檔。所以我找不到原因不使用gcc 4.x.試試看。 – Arash
感謝您的努力...... – TotallyUselessCoder
標準C並沒有你想要的東西的機制。特別要注意的是你所描述的兩種情況是一樣的:那int array[100]={0}
導致與全零初始化數組是不是因爲指定0被應用於所有元素,而是指定的0加到零日元件,並且所有否則未初始化元件被初始化爲默認值,這巧合被指定爲所述char
陣列的0初始化遵循相同的規則。
如果要初始化數組以「A」的99元,則初始化必須提供99「A的。如果你想避免打字(和計數)所有這些,那麼你可以使用宏來幫助:
#define REPEAT11(x) x x x x x x x x x x x
char string[100] = REPEAT11("AAAAAAAAA");
,它利用相鄰字符串文字的編譯時間串聯,形成想要的初始化。
感謝您清除我對數組的想法。 – TotallyUselessCoder
您還可以使用memset()
從<string.h>
填充陣列的前n個字節與'A'
個字符。這裏有一個例子:
#include <stdio.h>
#include <string.h>
#define SIZE 100
int main(void) {
/* initializes all elements to 0. */
/* Will not work with 'A' as the default values of this array are 0 */
char array[SIZE] = {0};
/* fills first 99 bytes with 'A', and leaves last byte as '\0' */
memset(array, 'A', sizeof(array)-1);
printf("array = %s\n", array);
printf("length of array = %zu\n", strlen(array));
/* Outputs:
array = AAAAAAAAA...
length of array = 99
*/
return 0;
}
感謝它的工作。:) – TotallyUselessCoder
- 1. 聲明一串字符串並選擇單個字符
- 2. 創建具有在第一個準備好的聲明和一個字符串
- 3. 奇怪BAD_EXC_ACCESS聲明一個字符串
- 4. 聲明一個字符串數組
- 5. c + +中可變的內存聲明一個字符串字面
- 6. 當聲明一個字符串具有多個值時,這意味着什麼?
- 7. 如何while循環內聲明一個公共字符串(C#)
- 8. 插入一個字符串一份聲明中沒有'
- 9. 在C中聲明一個looooong單行字符串#
- 10. 如何將一個.txt文件聲明爲一個字符串?
- 11. 聲明字符串
- 12. 如何聲明一個私有整數?
- 13. 將多個值分配給一個聲明的字符串
- 14. C# - 這個聲明的字符串被視爲一個常量?
- 15. 如何聲明一串字符串?
- 16. 將聲明多個具有相同內容的字符串文字分配額外的內存嗎?
- 17. 聲明如果有一個字符串和另一個字符串(做出列表)
- 18. 檢查一個字符串變量是否具有整數值
- 19. 檢查一個字符串是否具有整數if條件
- 20. 以字符串的最後一個字,變量未聲明?
- 21. 簡單的JOpenID字符串聲明
- 22. 如何將一組字符串聲明爲一個類型?
- 23. 在excel中聲明一個Unicode格式的字符串字符串
- 24. 比較兩個字符串,一個來自文件和一個聲明
- 25. Javascript來打印一個具有XML內容的字符串
- 26. C++將整個字符串拆分爲另一個字符串
- 27. 字符串沒有在條件聲明?
- 28. 用一個字符替換字符串中的整個字符
- 29. 聲明字符串常量
- 30. 字符串未被聲明?
確定「*它分配0到所有索引*「?另外,如果你想打印字符串「AAAAA」,你需要'char string [7] = {'A','A','A','A','A','\ 0'}。 ;' –
「我不想用循環來爲所有索引指定'A'」 - 這就是發生在引擎蓋下的情況,C非常故意隱藏。 –
是的,我已經嘗試過用數組。它將所有的索引賦值爲0.而你對你的字符串的描述是真的。但是當字符串的長度更大並且不容易聲明時該怎麼辦。 – TotallyUselessCoder