美文网首页
第11 章字符串 和字符串 函数

第11 章字符串 和字符串 函数

作者: 小风xf | 来源:发表于2018-12-02 10:11 被阅读0次

    使用 字符串 用户 交互 

    #include <stdio.h>

    #include < stdlib.h>

    #define MSG "you must have many talents tell me some "

    #define LIM 5

    #define LINELEN 81

    void main()

    {

    char name [LINELEN];

    char talents [LINELEN];

    int i  = 0;

    const char m1[40] = "Limit yourself to one line's worth";

    const char *m2 = " If your can't think of anything fake it ";

    const char *m3 = "\n Enough about me - what's your name?";

    const char *mytal[LIM] = {

    "Adding numbers swiftly ",

    "Multiplying accurately ",

    "stashing data ",

    "Following instructions to the letter ",

    "Understanding the C language "

    };

    printf("Let me tell you some of them .\n");

    puts ("what were they ? ah yes heres a partial list ");

    for ( i ;  i  < LIM;  i ++)

    {

    puts(*(mytal+i));

    }

    puts("\n");

    puts(m3);

    gets(name);

    printf("well %s ,%s \n",name,MSG);

    printf("%s \n %s \n ",m1, m2);

    gets(talents);

    puts("Let's see if i 've got that list");

    puts(talents);

    printf("think %s",name);

    system("pause");

    }

    把字符串 看作 指针 

    #include <stdio.h>

    #include < stdlib.h>

    #define MSG "you must have many talents tell me some "

    #define LIM 5

    #define LINELEN 81

    void main()

    printf("%s , %p %c","we","are",*"space farers");

    system("pause");

    }

    指针 和字符串 

    #include <stdio.h>

    #include < stdlib.h>

    #define MSG "you must have many talents tell me some "

    #define LIM 5

    #define LINELEN 81

    void main()

    char * mesg = "don't be a fool11!";

    char * copy;

    copy = mesg;

    printf("%s \n ",&copy[0]);

    printf("mesg = %s  & mesg = %p  value = %p \n ",mesg, &mesg,&mesg[0]);

    printf("copy = %s  & mesg = %p  value = %p \n ",copy, &copy,copy);

    system("pause");

    }

    读取一个名字

    #include <stdio.h>

    #include < stdlib.h>

    #define MSG "you must have many talents tell me some "

    #define LIM 5

    #define LINELEN 81

    void main()

    char name[LINELEN] ;

    gets(name);

    printf("%s",&name[0]);

    system("pause");

    }

    读取一个名字 

    #include <stdio.h>

    #include < stdlib.h>

    #define MSG "you must have many talents tell me some "

    #define LIM 5

    #define LINELEN 81

    void main()

    char name[LINELEN] ;

    char *p;

    p = gets(name);

    printf("%s      , %s",&name[0] ,& p[0]);

    system("pause");

    }

    使用fgets 读取一个名字 

    #include <stdio.h>

    #include < stdlib.h>

    #define MSG "you must have many talents tell me some "

    #define LIM 5

    #define LINELEN 81

    void main()

    char name[LINELEN] ;

    char *p;

    p = fgets(name,LINELEN,stdin);

    printf("%s      , %s",&name[0] ,& p[0]);

    system("pause");

    }

    使用 

    使用scanf 

    #include <stdio.h>

    #include < stdlib.h>

    #define MSG "you must have many talents tell me some "

    #define NAME 5

    #define LINELEN 11

    void main()

    char name[NAME] , name2[LINELEN];

    int a ;

    a = scanf("%5s %10s",name,name2);

    printf("%s,%s",&name[0] ,& name2[0]);

    system("pause");

    }

    使用 puts()

    #include <stdio.h>

    #include < stdlib.h>

    #define MSG "you must have many talents tell me some "

    #define NAME 5

    #define LINELEN 11

    void main()

    char str1[80] = "An array was initialized to me ";

    const char * str2 = "a, pointer was initialized to me";

    puts("I' m an argument to puts");

    puts(MSG);

    puts( &*(str1+0));

    puts(  str1 );

    puts(str2);

    puts( &str1[5]);

    puts(&(*(str1 +5)));

    puts( str2+4);

    puts( &str2[4]);

    system("pause");

    }

    用户自定义的输出函数 

    #include <stdio.h>

    #include < stdlib.h>

    #define MSG "you must have many talents tell me some "

    #define NAME 5

    #define LINELEN 11

    void put1(const char *);

    int put2 ( const char *);

    void main()

    put1("if I'd as much money");

    put1("as I could spend \n");

    printf("Icount %d characters.\n" , put2("I never would cry olld chairs to mend "));

    system("pause");

    }

    void put1(const char * string )

    {

    while (*string )

    {

    putchar(*string++);

    }

    }

    int put2 ( const char * string)

    {

    int count = 0;

    while (*string )

    {

    putchar(*string++);

    count++;

    }

    return count;

    }

    代码错误.

    #include <stdio.h>

    #include <string.h>

    #include < stdlib.h>

    void put2 ( char * , unsigned int);

    void main()

    char *mesg =" Hold on to your hats , hackers";

    puts(mesg);

    put2(&*(mesg+0),7);

    puts(mesg);

    system("pause");

    }

    void put2 (  char * string , unsigned int size)

    {

    if (strlen(string) > size )

    {

    string[size] = '\0';

    }

    }

    解决错误,所短字符串的函数 

    指针是一个常量,, 数组是一个变量

    #include <stdio.h>

    #include <string.h>

    #include < stdlib.h>

    void put2 ( char * , unsigned int);

    void main()

    char mesg[] =" Hold on to your hats , hackers";

    puts(mesg);

    put2(&*(mesg+0),7);

    puts(mesg);

    puts(mesg+8);

    system("pause");

    }

    void put2 (  char * string , unsigned int size)

    {

    if (strlen(string) > size )

    {

    string[size] = '\0';

    }

    }

    连接两个字符串 

    #include <stdio.h>

    #include <string.h>

    #include < stdlib.h>

    #define SIZE 80

    void main()

    char flower [SIZE];

    char addon[] = "s smell like old shoes ";

    gets(flower);

    strcat(flower,addon);

    puts(flower);

    puts(addon);

    system("pause");

    连接两个字符串 并且 ,检查第一个字符串的大小

    #include <stdio.h>

    #include <string.h>

    #include < stdlib.h>

    #define SIZE 30

    #define BUGSIZE 13

    void main()

    char flower [SIZE];

    char addon[] = "s smell like old shoes ";

    char bug[BUGSIZE];

    int available;

    puts("what is your favorite flower ? ");

    gets(flower);

    if ((strlen(addon) + strlen(flower)+1) <= SIZE)

    {

    strcat(flower, addon);

    }

    puts ("what is your favorite bug?");

    gets(bug);

    available = BUGSIZE - strlen(bug)-1;

    strncat(bug,addon,available);

    puts(bug);

    system("pause");

    STRCMP 满足要求的程序

    #include <stdio.h>

    #include <string.h>

    #include < stdlib.h>

    #define MAX 40

    #define ANSWER "grant"

    void main()

    char try1[MAX];

    puts("who is buried in grant's tomb?");

    gets(try1);

    while(strcmp(try1,ANSWER)  )

    {

    puts("No that's wrong try again ");

    gets(try1);

    }

    puts("that 's right");

    system("pause");

    strcmp 返回值

    #include <stdio.h>

    #include <string.h>

    #include < stdlib.h>

    #define MAX 40

    #define ANSWER "grant"

    void main()

    printf("strcmp (\" A \" , \" A \" )is ");

    printf("%d",strcmp ("A","A"));

    printf("strcmp (\" A \" , \"b \" )is \n");

    printf("%d",strcmp ("A","b"));

    printf("%d",strcmp ("hello","hel"));

    system("pause");

    使用strncmp()函数

    #include <stdio.h>

    #include <string.h>

    #include < stdlib.h>

    #define LISTSIZE 5

    #define MAX 40

    void main()

    char * list[ LISTSIZE] = {

    "astronomy",

    "astounding",

    "astrophysics ",

    "ostracize",

    "asterism"

    };

    int count = 0;

    int i ;

    for (  i = 0; i < LISTSIZE; i++)

    {

    if (strncmp(list[i],"astro",5) == 0)

    {

    printf("Found : %s\n",list[i]);

    count++;

    }

    }

    printf("the list contained %d words beginning with astro ",count);

    system("pause");

    strcpy()函数的使用

    #include <stdio.h>

    #include <string.h>

    #include < stdlib.h>

    #define WORDS "beast"

    #define SIZE 40

    #define LIM 5

    void main()

    char qword [LIM][SIZE];

    char temp[SIZE];

    int i = 0;

    printf("enter %d words beginning with q \n",LIM);

    while (i < LIM && gets(temp))

    {

    if (temp[0] != 'q')

    {

    printf("%s doesn't begin with q !",temp);

    }else

    {

    strcpy(qword[i],temp);

    i++;

    }

    }

    puts("here are the words accepted : ");

    for (  i = 0; i < LIM; i++)

    {

    puts(qword[i]);

    }

    system("pause");

    strncpy()

    #include <stdio.h>

    #include <string.h>

    #include < stdlib.h>

    //#define WORDS "beast"

    #define SIZE 40

    #define LIM 5

    #define TARGSIZE 7

    void main()

    char qword [LIM][SIZE];

    char temp[SIZE];

    int i = 0;

    printf("enter %d words beginning with q \n",LIM);

    while (i < LIM && gets(temp))

    {

    if (temp[0] != 'q')

    {

    printf("%s doesn't begin with q !",temp);

    }else

    {

    strncpy(qword[i],temp ,TARGSIZE -1 );

    qword[i][TARGSIZE - 1] = '\0';

    i++;

    }

    }

    puts("here are the words accepted : ");

    for (  i = 0; i < LIM; i++)

    {

    puts(qword[i]);

    }

    system("pause");

    strcpy高级属性 

    #include <stdio.h>

    #include <string.h>

    #include < stdlib.h>

    #define WORDS "beast"

    #define SIZE 40

    //#define LIM 5

    void main()

    char *orig = WORDS;

    char copy[SIZE] = "Be the best that you can be ";

    char *ps;

    puts(orig);

      puts(copy);

    ps = strcpy(copy +7 ,orig);

    puts(copy);

    puts(ps);

    system("pause");

    格式化一个字符串 

    #include <stdio.h>

    #include <string.h>

    #include < stdlib.h>

    #define WORDS "beast"

    #define MAX 20

    //#define LIM 5

    void main()

    {   

    char first[MAX] ;

    char list [MAX];

    char formal[2 * MAX+10];

    double prize;

    puts("enter your first name");

    gets(first);

    gets(list);

    puts("enter your prize noney");

    scanf("%lf",&prize);

    sprintf(formal,"%s , %-19s $%6.2f\n" ,list ,first,prize);

    puts( formal);

    system("pause");

    读进一些 字符串并 进行排序 

    #include <stdio.h>

    #include <string.h>

    #include < stdlib.h>

    #define SIZE 81

    #define LIM 20

    #define HALT " "

    void  stsrt (char *string[],int );

    void main()

    {   

    char input [LIM][SIZE] ;

    char *ptstr[LIM];

    int ct = 0;

    int k;

    printf("Input up to %d lines and Iwill sort them \n",LIM);

    printf("to stop press the enter key at a limne start \n");

    while (ct < LIM && gets (*(input +ct) ) != NULL && *(*(input+ct)+0) != '0')

    {

    ptstr[ct] = input[ct];

    ct++;

    }

    stsrt(ptstr,ct);

    puts("\n here's the sorted list \n");

    for (  k = 0; k < ct; k++)

    {

    puts(*(ptstr+k));

    }

    system("pause");

    void  stsrt (char *string[],int num)

    {

    char *temp;

    int top, seek;

    for (top = 0; top< num-1; top++)

    {

    for (  seek = top; seek < num ; seek++)

    {

    if (strcmp (*(string + top), string [seek]) > 0)

    {

    temp = string [top];

    string [top] = string[seek];

    string[seek] = temp;

    }

    }

    }

    }

    修改字符串, 大小写转换 

    #include <stdio.h>

    #include <string.h>

    #include < stdlib.h>

    #include <ctype.h>

    #define LIMIT 81

    void  ToUpper (char *  );

    int PunctCount (const char*);

    void main()

    {   

    char line [LIMIT];

    puts("Please enter a line");

    gets(line);

    ToUpper(line);

    puts(line);

    printf("that line has %d punctuation charachters \n",PunctCount(line));

    system("pause");

    }

    void  ToUpper (char * str )

    {

    while (*str  )

    {

    *str = toupper (*str);

    str++;

    }

    }

    int PunctCount (const char* str)

    {

    int ct = 0;

    while (*str  )

    {

    if (ispunct (*str))

    {

    ct++;

    }

    str++;

    }

    return ct;

    }

    带有参数的 main函数 

    #include <stdio.h>

    #include <string.h>

    #include < stdlib.h>

    #include <ctype.h>

    #define LIMIT 81

    void main(int argc ,char *argv[])

    {   

    int count ;

    printf("the command line has %d arguments \n",argc -1);

    for (  count = 1; count < argc; count++)

    {

    printf("%d %s \n ",count, argv[count]);

    }

    system("pause");

      }

    #include <stdio.h>

    #include < stdlib.h>

    void main()

    {

    char number[30];

    char *end;

    long value;

    puts("Enter a number (empty line to quit )");

    while(gets ( number) && number [0] != '\0')

    {

    value = strtol (number , & end , 10);

    printf("value %d , stopped at %s (%d)\n",value,end,*end) ;

    value = strtol (number , & end , 16 );

    printf("value : %ld, stopped at %s(%d)\n",value,end,*end);

    puts("next number ");

    }

    puts ("bey!\n");

    system("pause");

    }

    相关文章

      网友评论

          本文标题:第11 章字符串 和字符串 函数

          本文链接:https://www.haomeiwen.com/subject/ysxjcqtx.html