Luca琐记 字符串+blahblah

字符串

1.sizeof字符串,数组都是其总长度而不是用了多少个,sizeof字符串会算上封尾0
2.字符串名和数组名都是指针,a[i]="math"只是让指针指向了m的地址
###字符串的打印:

char subject[20]="computer science";
printf("%s",subject);
//若写为%10.4s,则是在十个空中写出前四个字符且右对齐
//%后加-为左对齐

       ~~~~~~       putchar函数:每次只能put一个,用在for循环中。
       ~~~~~~       puts函数:puts(str);

字符串输入

1.scanf(“%s”,str),由于本身就是指针不用取地址,而且scanf时候遇到空格回车及转义字符都停止
2.getchar(),在循环中用,且注意不带参数。
监测不为换行符的情况下循环getchar

do
{
  t=getchar();
  a[i]=t;
  i++;
}
while(t!='\n');

算数运算

处理函数

1.strcpy(des,sour),要保证终点大小要大于源大小
2.strlen监测字符串大小,没有封尾0
3.strcat(s1,s2)去掉s1封尾0,将2拼到1之后
4.strcmp按字典序进行比较

###字符串数组
1.相当于二维字符数组,会有冗余的位置

char city[][11]={"shanghai","beijing"};//二维数组中一维必须声明长度,即列数

2.字符串指针数组

char *city[]={"beijing","tianjin"}

相当于每个元素都是指向字符串的指针,此时仅一维,不再有冗余的空间
当访问其中某个元素时,就和二维数组的写法一样


将一个十六进制的转化为10进制的整数

1.注意 16进制中a表示10,b表示11,
所以遇到字母,可以用num-‘a’+10,即为其对应10进制数。
2.遇到数字字符,num-‘0’
3.再为num赋予权重,如在第三位上就要乘三次16,用for循环从头到尾处理,每轮for循环后len–,对应get到后一位的char
样貌

int i=0,j=0,num=0,sum=0;
    int len=strlen(str);
    while(str[i]!='\0')
    {
        if(str[i]>='0'&&str[i]<='9')

           num=str[i]-'0';

        else if(str[i]>='a'&&str[i]<='f')

           num=str[i]-'a'+10;

        else if(str[i]>='A'&&str[i]<='F')

           num=str[i]-'A'+10;

        else

           break;

        for(j=0;j<len-1;j++)

        {

            num=num*16;

        }

        sum+=num;  

        i++;

        len--;
    }
    printf("%d",sum);

最大最小单词简略版

编写程序找出一组单词中“最小”单词和“最大”单词。
用户输入单词后,程序根据字典顺序决定排在最前面和最后面的单词。
当用户输入4个字母的单词时,程序停止读入。假设所有单词都不超过20个字母。

1.思路:先用a输入一个字符串,作为最大值和最小值,然后接着输入字符串,比较大小并对最大最小值赋值
2.注意停止标志为输入一个四字单词,故不要忘记这个单词也要比较一次,前面if(strlen!=4),后面else

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值