c语言学习笔记 - 字符串

PHP的语法太松散了,发明PHP的人让PHP变的如此简单,导致现在回头看C语言,觉得好多地方好麻烦的感觉,其实这些都是惯性思维,刹不住车可就不好学新东西了,所以还是要多记笔记,多比较。

关于字符串的一个学习小例子

把一个字符串倒过来显示

#include <stdio.h>

int main(void)
{
  char str1[]="hello world!"; // 除了要声明这是个char字符类型,好要指明这个字符类型的字符数也就是数组的元素个数,这和PHP相差较大,看看PHP,就这样 $str1="hello world"

                //如果后面马上赋值了具体的字符串,这里用 str1[] ,想想PHP如果是数组  $arr[]="hello"是追加,

                //其实并不是PHP变量不用说明数据类型,只是这些东西都在自动转换里了,这里为什么要指明这些呢?因为这里不指明数据类型和长度的话,那怎么在内存里划分空间给这些变量?

                //字符串的每个字符都要一个空间来存储,连续起来就是一个数组,是数组当然要知道数组的元素个数,如果不指明数组元素个数,好歹也要把元素一一列出来,解析的时候好点数啊

                //c语言赋值的和编写的时候要养成想想内存空间的习惯就不会总是忽略这些东西了
  char str2[20];      

  int i=0;
  while(str1[i])                    //这是计算字符的长度,因为每个字符后面都会加一个表示结束的\0,while循环到最后这个\0时就会退出
    i++;          //引入 #<string.h> 使用strlen也可以直接求字符长度

  int j;
  for(j=0;j<i;j++)           //这里是<i而不是<=,数组的第一元素键值是从0开始的,
  {
    printf("%c \n",str1[i-j-1]);   //这里输出的是字符串中的其中一个字符,用的是%c  
    str2[j]=str1[i-j-1];     //这里之前没有-1,第一元素就会把str1最后一个 \0给赋值进来,导致这个字符串一开始就结束了  
  }

  printf("%s",str2);
  return 0;
}

posted @ 2017-02-23 15:05  菜鸟开车  阅读(293)  评论(0编辑  收藏  举报