当声明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