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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279708.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279708.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279708.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

新服務器安裝和配置zabbix的playbook

公司的金山區云服務器是由我負責的&#xff0c;每一次新購買了金山區的服務器都要把這些新服務器添加到zabbix監控里&#xff0c;于是我就編寫了一個ansible的playbook&#xff0c;這樣以后就可以在執行playbook的時候“帶薪拉屎”了。 ansible主機準備&#xff1a; 1&#xff…

15個變態的Google面試題以及答案

在當前經濟形勢不景氣的情況下&#xff0c;谷歌招聘新員工是一件令人振奮的事&#xff0c;特別是對那些在當前金融風暴中渴望找到安全港的年輕經理們和軟件開發商們來說是個好消息。   不過&#xff0c;也不要高興太早&#xff0c;谷歌在招聘新員工時&#xff0c;更加青睞名牌…

小程序禁用ios 左右滑動_如何在使用應用程序時禁用iOS控制中心

小程序禁用ios 左右滑動The Control Center has proven to be a thoughtful and welcome addition to iOS, but it can be annoying sometimes if you’re playing a game or using an app, and you accidentally open it. Here’s how you can disable it in such situations.…

repomd.xml錯誤14 not found

用Centos7最小化安裝了系統&#xff0c;想練練手&#xff0c;可以到換了“搜狐”的YUM源&#xff0c;系統總報錯更新錯誤說找不到repomd.xml。 然后就一直搜解決問題&#xff0c;能用到的都用到了&#xff0c;網上提到的都用到了。浪費了好幾個小時沒解決。正當無語的時候&…

淺談javascript遞歸(白話版)

遞歸 遞歸是一種解決問題的方法&#xff0c;通常我們可以理解成函數調用自身&#xff1b; 什么遞歸&#xff1f;遞歸怎么寫&#xff1f; 首先直接調用自身的方法和函數&#xff0c;他是一個遞歸&#xff0c;我們看代碼&#xff1a; 復制代碼 var recursiveFun function(params…

超鏈接禁用_如何在Microsoft Word中禁用超鏈接

超鏈接禁用When you type a web or email address in Word, you may notice that the program automatically formats it as a live hyperlink. This is a setting in Word’s AutoFormat feature that is on by default but can be easily turned off. 當您在Word中鍵入網站或…

ssh面試題總結

題目1&#xff1a;Hibernate工作原理及為什么要用&#xff1f; 原理&#xff1a; hibernate&#xff0c;通過對jdbc進行封裝&#xff0c;對 java類和 關系數據庫進行mapping&#xff0c;實現了對關系數據庫的面向對象方式的操作&#xff0c;改變了傳統的jdbc sql操作數據的方式…

SaltStack的salt-ssh使用及LAMP狀態設計部署

SaltStack的salt-ssh使用及LAMP狀態設計部署 1、salt-ssh的使用 官方文檔&#xff1a;https://docs.saltstack.com/en/2016.11/topics/ssh/index.html &#xff08;1&#xff09;安裝salt-ssh [rootlinux-node1 ~]# yum install -y salt-ssh&#xff08;2&#xff09;配置salt-…

程序員筆記(知識)管理的一點經驗

記筆記這件事&#xff0c;也許在很多人看來&#xff0c;再普通、簡單不過了——從小老師就教育我們要這么做。不同的人有不同的方式&#xff0c;我們最終的目的&#xff0c;還是希望不要停留在只是記錄這一層面上&#xff0c;而是將它們轉變為我們的知識。作為一個程序員&#…

xbox可以錄視頻聲音嗎_什么是Xbox Live Gold,它值得嗎?

xbox可以錄視頻聲音嗎If you have an Xbox One or Xbox 360, Microsoft’s Xbox Live Gold service is required to play multiplayer games online. A subscription costs $10 per month or $60 per year. Xbox Live Gold also includes additional benefits, like free games…

windows - mysql

Windows:(mysql)操作:0.下載安裝mysql www.mysql.org downloads community 5.7.21 下載5.6 Microsoft Windows 解壓到C: C:\mysql-5.6.39-winx64 C:\mysql-5.6.39-winx64\bin bin/mysql 客戶端 bin/mysqld 服務端 設置環境變量: …

顯示器選三星還是飛利浦_如何為飛利浦色相燈設置計時器

顯示器選三星還是飛利浦Maybe you want to turn off your Philips Hue lights after a certain amount of time has passed, or have them blink as a reminder. Whatever your needs, here’s how to set a timer for your Philips Hue lights to have them automatically tur…

PIE SDK與OpenCV結合說明文檔

1.功能簡介 OpenCV是基于BSD許可&#xff08;開源&#xff09;發行的跨平臺計算機視覺庫&#xff0c;可以運行在Linux、Windows、Android和Mac OS操作系統上。它輕量級而且高效——由一系列 C 函數和少量 C 類構成&#xff0c;同時提供了Python、Ruby、MATLAB等語言的接口&…

js的棧堆與淺拷貝、深拷貝的理解

一&#xff1a;什么是堆棧&#xff1f; 我們都知道&#xff1a;在計算機領域中&#xff0c;堆棧是兩種數據結構&#xff0c;它們只能在一端(稱為棧頂(top))對數據項進行插入和刪除。 堆&#xff1a;隊列優先,先進先出&#xff1b;由操作系統自動分配釋放 &#xff0c;存放函數的…

python面向對象基礎語言進階

在此感謝前輩們的指導&#xff1a;http://python.jobbole.com/80955/ https://www.cnblogs.com/wupeiqi/p/4766801.htmlhttps://www.cnblogs.com/paomaliuju/p/5122761.html https://www.cnblogs.com/goser/articles/7097728.html http://www.cnblogs.com/alex3714/articles/52…

ea 備份碼是什么_EA的原始訪問是什么,值得嗎?

ea 備份碼是什么EA’s Origin Access gives you access to more than 70 games, discounts, and new EA games before they’re released for a monthly (or yearly) subscription fee. But is it really worth it? EA的Origin Access可讓您訪問70多種游戲&#xff0c;打折游戲…

Https 加密原理分析

眾所周知&#xff0c;HTTP 協議通過明文傳輸&#xff0c;是不安全的。于是&#xff0c;就在 HTTP 協議的基礎上&#xff0c;進行了數據加密&#xff0c;也就誕生了 HTTPS 協議。注意&#xff0c;HTTPS 并不是一個新的協議&#xff0c;它只不過是在 HTTP 的基礎上加了一層 TLS (…

JS框架_(JQuery.js)純css3進度條動畫

百度云盤  傳送門  密碼&#xff1a;wirc 進度條動畫效果&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1">…

如何在Android主屏幕上添加熱點快捷方式

Portable Wi-Fi hotspots on your Android phone are great, because hotel Wi-Fi usually isn’t, but toggling that hotspot on and off is a pain. Here are several easy ways to add a hotspot widget to your home screen. 您的Android手機上的便攜式Wi-Fi熱點很棒&…

提高關鍵詞排名的28個SEO技巧

28個讓關鍵詞排名明顯改觀的SEO技巧&#xff1a; 關鍵詞位置、密度、處理 URL中出現關鍵詞&#xff08;英文&#xff09; 網頁標題中出現關鍵詞&#xff08;1-3個&#xff09; 關鍵詞標簽中出現關鍵詞&#xff08;1-3個&#xff09; 描述標簽中出現關鍵詞&#xff08;主關鍵…