C语言—表示字符串和字符串I/O

作者:追风剑情 发布于:2019-10-14 19:40 分类:C

示例一:字符串字面量(字符串常量)

  1. //Visual Studio中加上这句才可以使用scanf()
  2. //否则只能使用scanf_s()
  3. #define _CRT_SECURE_NO_WARNINGS
  4. #include <stdio.h>
  5. #include <stdbool.h>
  6.  
  7. #define MSG "I am a symbolic string constant."
  8. #define MAXLENGTH 81
  9.  
  10. //argc: 参数个数 argv[]: 参数数组
  11. int main(int argc, char *argv[])
  12. {
  13. char words[MAXLENGTH] = "I am a string in an array.";
  14. const char * pt1 = "Somethong is pointing at me.";
  15. //puts()会自动在字符串末尾加换行符
  16. puts("Here are some strings:");
  17. puts(MSG);
  18. puts(words);
  19. puts(pt1);
  20. words[8] = 'p';
  21. puts(words);
  22.  
  23. //下面两句等价
  24. //用双引号串联字符串,中间可以加空格。
  25. char greeting[50] = "Hello, and"" how are" "you"
  26. " today!";
  27. char greeting1[50] = "Hello, and how are you today!";
  28. puts(greeting);
  29.  
  30. //用引号括起来的字符串称为字符串字面量(字符串常量)
  31. //上面的字符串变量指向的是一个地址,类似于数组变量。
  32.  
  33. //%c打印首字符
  34. printf("%s, %p, %c\n", "We", "are", *"space farers");
  35.  
  36. system("pause");
  37. return 0;
  38. }

运行测试
11111.png

示例二:字符串数组和初始化

  1. //Visual Studio中加上这句才可以使用scanf()
  2. //否则只能使用scanf_s()
  3. #define _CRT_SECURE_NO_WARNINGS
  4. #include <stdio.h>
  5. #include <stdbool.h>
  6.  
  7. //argc: 参数个数 argv[]: 参数数组
  8. int main(int argc, char *argv[])
  9. {
  10. /*定义字符串数组时,必须让编译器知道需要多少空间。
  11. 一种方法是用足够空间的数组储存字符串。*/
  12. const char m1[40] = "Limit yourself to one line's worth.";
  13.  
  14. /*标准的数组初始化形式
  15. 注意最后的空字符。没有这个空字符,这就不是一个字符串,
  16. 而是一个字符数组。在指定数组大小时,要确保数组的元素
  17. 个数至少比字符串长度多1(为了容纳空字符)。所有未被
  18. 使用的元素都被自动初始化为0(这里的0指的是char形式的空字符,
  19. 不是数字字符0)*/
  20. const char m2[40] = {'L', 'i', 'm', 'i', 't', '\0'};
  21.  
  22. /*让编译器确定数据的大小,让编译器计算数组的大小只能用在初始化数组时。*/
  23. const char m3[] = "If you can't think of anything, fake it.";
  24.  
  25. /*声明数组时,数组大小必须是可求值的整数。在C99新增变长数组之前,
  26. 数组的大小必须是整型常量,包括由整型常量组成的表达式。*/
  27. int n = 8;
  28. char cookies[1]; //有效
  29. char cakes[2 + 5];//有效,数组大小是整型常量表达式
  30. char pies[2 * sizeof(long double) + 1];//有效
  31. //char crumbs[n]; //在C99标准之前无效,C99标准之后这种数组是变长数组
  32.  
  33. /*字符数组名和其他数组名一样,是该数组首元素的地址。*/
  34. char car[10] = "Tata";
  35. if (car == &car[0] && *car == 'T' && *(car + 1) == car[1])
  36. {
  37. printf("True True True\n");
  38. }
  39.  
  40. /*还可以使用指针表示法创建字符串。*/
  41. //下面两句等价
  42. const char * pt1 = "Something is pointing at me.";
  43. const char ar1[] = "Something is pointing at me.";
  44.  
  45. puts(pt1);
  46. puts(ar1);
  47.  
  48. system("pause");
  49. return 0;
  50. }

运行测试
1111.png

标签: C语言

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号