usage of char array which elements are mutilple STRINGs ended with a "\0"

usage of char array which elements are mutilple STRINGs ended with a "\0".

#include <stdio.h>

char stringsarray[] = {
        "many" "strings" "\0"
        "are" "stored" "\0"
        "in a strings_array" "\0"
};

void main(void)
{
        //char *ptr = stringsarray;
        printf("the first element is: %s\n", &stringsarray[0]);
        printf("the second element is: %s\n", &stringsarray[1]);
        printf("the third element is: %s\n", &stringsarray[2]);
        printf("the fourth element is: %s\n", &stringsarray[3]);
        printf("the fifth element is: %s\n", &stringsarray[4]);
//      printf("the sixth element is: %s\n", &stringsarray[5]);
//      printf("the seventh element is: %s\n", &stringsarray[6]);
//      printf("the eighth element is: %s\n", &stringsarray[7]);
}

execution result(compiling with gcc):

[email protected]:~/s3c2440/clanguage/strings$ gcc -o exe strings.c
[email protected]:~/s3c2440/clanguage/strings$ ./exe
the first element is: manystrings
the second element is: anystrings
the third element is: nystrings
the fourth element is: ystrings
the fifth element is: strings

conclusions:

1. statement "printf("the first element is: %s\n", &stringsarray[0]);", it will print continuously string"strings" until arriving "\0" when finishing printing the first string("many") in STRING0("many"
"strings" "\0"). (every strings(constant) are appended with a ‘\0‘ as a end symbol by system, thinking in this way, the result of this statement should be "many" only, the part after "many" at the line not include.)

2. there is doubt how to refer to the second line as a part like refering to the first line in a simple way?(please proficients leave direction, thanks!)

there is a such construction in u-boot:

static uchar default_environment[] = {
#if defined(CONFIG_BOOTARGS)
	"bootargs=" CONFIG_BOOTARGS "\0"
#endif
#if defined(CONFIG_BOOTCOMMAND)
	"bootcmd=" CONFIG_BOOTCOMMAND "\0"
#endif
#if defined(CONFIG_RAMBOOTCOMMAND)
	"ramboot=" CONFIG_RAMBOOTCOMMAND "\0"
#endif
#if defined(CONFIG_NFSBOOTCOMMAND)
	"nfsboot=" CONFIG_NFSBOOTCOMMAND "\0"
#endif
#if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)
	"bootdelay=" MK_STR (CONFIG_BOOTDELAY) "\0"
#endif
.............................................
};

来自百度知道:

c语言中 unsigned char default_environment[] = { "baudrate=" "115200" "\0"}; 这怎么解释?

C提供了一种字符数组初始化功能,即如果将要对字符数组初始化为几个字符串常量连接起来的时候,可以在右值的{}中直接按顺序写上这几个字符串常量,编译器会把它们自动衔接起来。字符串常量间可以用空格隔开,也可不用隔开。
时间: 2024-10-27 06:14:05

usage of char array which elements are mutilple STRINGs ended with a "\0"的相关文章

java char array杂记

char array转string用Arrays.toString会多出来逗号和大括号 可以用replaceAll方法来取代 但是更好的一种方案是 直接用String类的构造函数 char array的默认值是asc 0 而不是' 'asc 32  详情见代码 1 public class Test { 2 3 public static void main(String[] args) { 4 5 char a[]=new char[10]; 6 if(a[0]==0) 7 { 8 Syste

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public TreeNode sortedArrayToBST(int[] num) { if(num==null||num.length==0){ return

算法问题整理

1.相同位数,数字和相同问题 给定一个数字编码N,大多数情况下可以找到一个数字编码M,其位数与N相同,各位数字之和与N的各位数字之和相同.并且M是大于N的数值中最小的一个,也可能M不存在.如:N=134,则M=143.如N=020,则M=101.形式化表述为F(N)=M.如果M不存在,则F(N)=-1.要求给定算法计算F(N)序列. #include<iostream> #include<cstring> using namespace std; #define MAXNUM 10

基数排序与桶排序,计数排序【详解】

桶排序简单入门篇^-^ 在我们生活的这个世界中到处都是被排序过的东东.站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东东都需要排序,可以说排序是无处不在.现在我们举个具体的例子来介绍一下排序算法. 首先出场的是我们的主人公小哼,上面这个可爱的娃就是啦.期末考试完了老师要将同学们的分数按照从高到低排序.小哼的班上只有5个同学,这5个同学分别考了5分.3分.5分.2分和8分,哎,考得真是惨不忍睹(满分是10分).接下来将分

DEBUG模式下, 内存中的变量地址分析

测试函数的模板实现 [cpp] view plain copy /// @file my_template.h /// @brief 测试数据类型用的模板实现 #ifndef MY_TEMPLATE_H_2016_0123_1226 #define MY_TEMPLATE_H_2016_0123_1226 template<int iArySize> void fnTestDataType() { char szBuf[iArySize] = {'\0'}; unsigned short wT

文本项目系列[1]——逆序字符串

1.需求 逆转字符串——输入一个字符串,将其逆转并输出. 比如:输入字符串为:love.则输出为:evol. 注:在下文中,字符串翻转也是逆序的意思. 2.思路 有两种大的思路: (1) StringBuffer提供了字符串翻转功能,直接利用API即可. (2) 利用String本质是char数组进行字符串逆序. 3.代码 1 package com.myeclipse; 2 3 /** 4 * 逆转字符串——输入一个字符串,将其逆转并输出 5 * @author MrChen 6 * 7 */

JS 事件(9)—事件练习

一.QQ拖拽及状态栏选择 HTML 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <title>QQ练习</title> 5 <link href="css/main.css" rel="stylesheet" /> 6 <script src="js/dr

二级指针做输入的第一种模型

1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 6 void printNum(char **array, int num) 7 { 8 int i = 0; 9 for (i = 0; i < num; i++) 10 { 11 printf("%s ", array[i]); 12 } 13 }

Java小知识点------最简单的加密算法(异或加密)

下面给出最简单的代码,可在该代码的基础上添加其他功能,比如将加密后的字符串输出到文件中,从文件中读取要加密或者解密的字符串等... public class Encryption {// 异或加密算法 public static void main(String[] args) { String password="中秋快乐...";//要加密或者解密的字符串 char[]array=password.toCharArray();//获取字符数组 for(int i=0;i<ar