日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言基础(五)

發布時間:2023/12/6 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言基础(五) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、字符串相關函數

  1.gets()(輸入字符串)

      格式:gets(字符串);

   (1)區別:gets(str)與scanf(“%s”,str)

      gets(str)允許輸入的字符串含有空格

      scanf(“%s”,str)不允許含有空格

  注意:由于以上無法知道字符串大小,很容易導致字符數組越界

  2.fgets()(輸入字符串)

    格式:fgets(char *s, int size, FILE *stream)

      s:字符串;

      size:指定最大讀取字符的長度(size-1)

      stream:文件指針,如果讀鍵盤輸入的字符串,固定寫為stdin

    結尾自帶"\n".不用擔心越界問題

  3.puts()(字符串輸出)

    格式:puts(字符串)

    在輸出后自動輸出一個“\n”

  4.fputs()(字符串輸出)

    格式:fputs(constchar * str, FILE * stream)

      s:字符串

      stream:文件指針,如果讀鍵盤輸入的字符串,固定寫為stdin

    注意:fputs()是puts()的文件操作版本,但fputs()不會自動輸出一個'\n'


  5.srelen()(計算指定字符串大小)

    格式:strlen(const char *s);

       s:字符串首地址

  6.strcpy()(把src所指向的字符串復制到dest所指向的空間中,'\0'也會拷貝過去)

    格式strcpy(dest, src)

    dest:目的字符串首地址

??????   src:源字符首地址

    連接后:

    注意:如果參數dest所指的內存空間不夠大,可能會造成緩沖溢出的錯誤情況。

  7.strncpy()

     功能:把src指向字符串的前n個字符復制到dest所指向的空間中,是否拷貝結束符 

        看指定的長度是否包含'\0'。

     格式:strncpy(dest, src, size_t n)

         dest:目的字符串首地址

??????        src:源字符首地址

??????        n:指定需要拷貝字符串個數

  8.strcat()

    功能:將src字符串連接到dest的尾部,‘\0’也會追加過去

    格式:strcat(dest, src)

        dest:目的字符串首地址

??????       src:源字符首地址

  9.strncat()

    功能:將src字符串前n個字符連接到dest的尾部,‘\0’也會追加過去

    格式:strncat(dest, src, size_t n)

        dest:目的字符串首地址

??????       src:源字符首地址

??????       n:指定需要追加字符串個數

  10.strcmp()

    功能:比較 s1s2 的大小,比較的是字符ASCII碼大小

    格式:strcmp(s1,s2)

      s1:字符串1首地址

??????     s2:字符串2首地址

  11.strncmp()

    功能:strcmp的追加,比較前n個大小的字符大小,比較的是字符ASCII碼大小

    格式:strncmp(s1,s2,n)

?

      s1:字符串1首地址

??????     s2:字符串2首地址

??????     n:指定比較字符串的數量

?

  12.sprintf()

   功能:格式化數據,然后將結果輸出到str指定的空間中,直到出現字符串結束符 '\0'? 為止

   格式:sprintf(str, format, ...)

      str:字符串首地址

??????     format:字符串格式,用法和printf()一樣

  13.sscanf()

   功能:從str指定的字符串讀取數據,并根據參數format字符串來轉換并格式化數據

   格式:sscnf(str,?format, ...)

      str:指定的字符串首地址

??????     format:字符串格式,用法和scanf()一樣

  14.strchr()

    功能:在字符串s中查找字母c出現的位置

    格式:strchr(s, int c)

      s:字符串首地址

??????     c:匹配字母(字符)

  15.strstr()

    功能:查找在字符串riunv中找llunk出現的位置

    格式:strstr(riunv,link)

  16.strtok()

    功能:來將字符串分割成一個個片段。當strtok()在參數s的字符串中發現

       參數delim中包含的分割字符時, 則會將該字符改為\0 字符,當連

      ? ? 出現多個時只替換第一個為\0。

    格式:strtok(str, delim)

       str:指向欲分割的字符串

??????      delim:為分割字符串中包含的所有字符

注意: 在第一次調用時:strtok()必需給予參數s字符串

    往后的調用則將參數s設置成NULL,每次調用成功則返回指向被分割出片段的指針

  17.atoi()

    功能:atoi()會掃描nptr字符串,跳過前面的空格字符,

       直到遇到數字或正負號才開始做轉換,而遇到

       非數字或字符串結束符('\0')才結束轉換,并將結果返回返回值。

    格式:atoi(nptr);

      ? ??nptr:待轉換的字符串

  拓展(與atoi類似的)

    1.atof():把一個小數形式的字符串轉化為一個浮點數。

    2.atol():將一個字符串轉化為long類型

一、函數

 1.函數的定義

  返回類型 函數名(形式參數列表)

??????   {

?????? ??????   數據定義部分;

?????? ??????   執行語句部分;

    }

 2.函數名

   可以隨意取,但最好見名知意

注意:函數名的后面有個圓換號(),代表這個為函數,不是普通的變量名。

 3.形參列表

  在定義函數時指定的形參,在未出現函數調用時,它們并不占內存中的存儲單元,因此稱它們是形式參數或虛擬參數,簡稱形參,表示它們并不是實際存在的數據,所以,形參里的變量不能賦值。

  定義:類型+變量的形式

 4.函數體

  函數功能實現的過程

 5.返回值

  函數的返回值是通過函數中的return語句獲得

注意:如果函數返回的類型和return語句中表達式的值必須一致,程序則會報錯。

  

課后作業

  

思考任務(課后練習)

?

1、設計一個計算器,可以進行加、減、乘、除運算,類型全部都是int即可

??????? 要求從鍵盤輸入指令及操作數,如:

??????? add 15 25??????? //計算15+25的值,并返回結果

??????? sub 25 15??????? //計算25-15的值,并返回結果

??????? mux 3 5?????????? //計算 3*5的值, 并返回結果

??????? dive 25 5 ?????? //計算25/5的值,并返回結果

?

提示:1) 需要封裝函數

??????? ? 2) scanf("%s %d %d", name, a, b);

?

2、不用使用庫函數,編寫一個函數my_strcmp(),功能和strcmp()一樣,實現字符串大小比較:

int my_strcmp(char s1[], char s2[]);

int main()

{

??????? char s1[] = "hello world";

??????? char s2[] = "hello abc";

??????? int flag = my_strcmp(s1, s2);

??????? if(flag == 0)

??????? {

??????????????? printf("%s 等于 %s\n", s1, s2);

? ? ? ? }

??????? else if(flag > 0)

??????? {

??????????????? printf("%s 大于 %s\n", s1, s2);

??????? }

??????? else

??????? {

??????????????? printf("%s 小于 %s\n", s1, s2);

? ? ? ? }

??????? return 0;

}

?

?

?

答案

1.

#include<stdio.h>

#include<string.h>

int main()
{
  int a=0,b=0;
  char name[5];
  char s2[5]="add";
  char s3[5] = "sub";
  char s4[5] = "mux";
  char s5[5] = "dive";
  printf("請輸入加add,減sub,乘mux,除dive\n");
  gets(name);
  printf("請輸入兩個數:\n");
  scanf("%d %d", &a, &b);
  if (strcmp(name, s2) == 0)
  {
    printf("%d", a + b);
  }
  else
  if (strcmp(name, s3) == 0)
  {
    printf("%d", a - b);
  }
  else
  if (strcmp(name, s4) == 0)
  {
    printf("%d", a*b);
  }
  else
  if (strcmp(name, s5) == 0)
  {
    printf("%d", a/b);
  }
  else
  {
    printf("輸入出錯");
  }
  return 0;
}

?

2.

#include<stdio.h>

#include<string.h>

int my_strcmp(char s1[], char s2[])
{
  int i;
  i = strcmp(s1, s2);
  return i;
}
int main()
{
  int flag;
  char s1[] = "hello world";
  char s2[] = "hello abc";
  flag = my_strcmp(s1, s2);
  if (flag == 0)
  {
    printf("%s等于%s\n", s1, s2);
  }
  else

  if (flag > 0)
  {
    printf("%s大于%s\n", s1, s2);
  }
  else
  {
    printf("%s小于%s\n", s1, s2);
  }
  return 0;
}

?

?

?

   

  

轉載于:https://www.cnblogs.com/Riunv/p/10693427.html

總結

以上是生活随笔為你收集整理的C语言基础(五)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。