课外天地 李树青学习天地C语言程序设计 → [推荐]第七课代码讲义:字符串数组


  共有12238人关注过本帖树形打印复制链接

主题:[推荐]第七课代码讲义:字符串数组

帅哥哟,离线,有人找我吗?
admin
  1楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1938 积分:26572 威望:0 精华:34 注册:2003/12/30 16:34:32
[推荐]第七课代码讲义:字符串数组  发帖心情 Post By:2015/11/15 21:21:55 [只看该作者]

字符串数组
常规输出
int main()
{
    char str[]="Hello world!";
    printf("%s",str);
    return 0;
}

逐个字符打印
int main()
{
    int i;
    char str[]="Hello world!";
    for(i=0;i<=strlen(str);i++)
    {
        printf("%d\n",str[i]);
    }
    return 0;
}

如果越界了会怎么样?


输入字符串
int main()
{
    char str[100];
    scanf("%s",str);
    printf("%s",str);
    return 0;
}

字符串专用函数
int main()
{
    char str[100];
    gets(str);
    puts(str);
    return 0;
}


int main()
{
    char str1[100],str2[100];
    gets(str1);
    gets(str2);
    strcat(str1,str2);//catenate
    puts(str1);
    return 0;
}


int main()
{
    char str1[100],str2[100];
    gets(str1);
    gets(str2);
    puts(str1);
    strcpy(str1,str2);//copy
    puts(str1);
    return 0;
}

小心目标数组的大小要能容纳


int main()
{
    char str1[100],str2[100];
    gets(str1);
    gets(str2);
    if(strcmp(str1,str2)>0) //compare
        puts(">");
    else if(strcmp(str1,str2)==0)
        puts("=");
    else
        puts("<");
    return 0;
}


在三个字符串中找到最大的那个
 char string[20],str[3][20];
    int i;
    for(i=0; i<3; i++)
        gets(str[i]);
    if(strcmp(str[0],str[1])>0)
        strcpy(string,str[0]);
    else
        strcpy(string,str[1]);
    if(strcmp(str[2],string)>0)
        strcpy(string,str[2]);
    printf("\nThe largest string is:\n%s\n",string);

 

练习:
1)输入一行字符,统计其中的单词个数,单词间空格分开
这段代码有问题,假设一定是空格开头
    char str[]="  this is a   book   ";
    int i=0,words=0;;
    for(i=0;i<strlen(str);i++)
    {
        if(str[i]>='a' && str[i-1]<='z')
            words++;
    }
    printf("%d",words);


#include <stdio.h>
void main()
{
    char str[100];
    int i=0,words=0,flag=0;
    gets(str);
    for(i=0; i<strlen(str); i++)
    {
        if(flag==0 && str[i]!=' ')
        {
            flag=1;
            words++;
        }
        if(str[i]==' ')
            flag=0;
    }

    printf("There are %d words in the line\n",words);
}


#include <stdio.h>
void main()
{
    char str[100];
    int i,num=0,word=0;
    char c;
    gets(str);
    for(i=0; (c=str[i])!='\0'; i++)
        if(c==' ')
            word=0;
        else if(word==0)
        {
            word=1;
            num++;
        }
    printf("There are %d words in the line\n",num);
}

2)自己实现复制
#include <stdio.h>
#include <string.h>
int main()
{
    char s1[100],s2[100];
    int i;
    printf("input s2:");
    scanf("%s",s2);
    for (i=0; i<=strlen(s2); i++)
        s1[i]=s2[i];
    printf("s1:%s\n",s1);
    return 0;
}


3)自己实现追加
#include <stdio.h>
int main()
{
    char s1[80],s2[40];
    int i=0,j=0;
    printf("input string1:");
    scanf("%s",s1);
    printf("input string2:");
    scanf("%s",s2);
    while (s1[i]!='\0')
        i++;
    while(s2[j]!='\0')
        s1[i++]=s2[j++];
    s1[i]='\0';
    printf("\nThe new string is:%s\n",s1);
    return 0;
}

 

 

 

 

 

 


 回到顶部