1樓:匿名使用者
*str主要是判斷字串是否到了末尾一個字元'\0'
1。首先c語言運算子的優先順序,關係運算子「!=」大於邏輯運算子「&&」
所以(*str&&*str!=ch) 等價於*str&&(*str!=ch)。
2。來看一看while迴圈中內容的意思。&&是必須兩個變數的值都為1才為真,才會執行while迴圈內內容。
而*str是一個字串的內容,字串只有當末尾'\0'才為0;*str==ch的時候為0
舉例:例1。s="12"; c='3'
第1次迴圈: *str='1', '1'!='3'都成立,所以進入迴圈str++;
第2次迴圈: *str='2', '2'!='3'都成立,所以進入迴圈str++;
第3次迴圈: *str='\0'=0, '0'!='3';因為*str=0所以判斷結果為0,不再進入迴圈;
進入if判斷:*str=0;ch='3', 所以滿足條件。因為現在str指向原字串末尾,所以str[0]=ch表示把源字串末尾替換為新的字元,str[1]='\0'表示在新字串末尾再加個結束符'\0';
例2。s="123"; c='2'
第1次迴圈: *str='1', '1'!='2'都成立,所以進入迴圈str++;
第1次迴圈: *str='2', '2'!='2',因為'2'=='2'所以判斷結果為0,不再進入迴圈;
進入if判斷:*str='2';ch='2',二者相等,所以不滿足條件,不進入判斷。
所以不會改變原來字串模樣。
總結:思路是:在字串中找一個字元,如果沒有找到就操作最後結束符,把新字元補充在該位置。如果找到,就退出此函式,什麼事也不做。
判斷字元在不在裡面就是用個指標移動指向字串的位置,然後用*str!=ch來判斷,如果相同指標就不再指向下一個位置,並且不進入if判斷。
怎麼將最後的字元插在最後面的見我舉例的例1
c語言的一些題目:不太理解**,求詳細解釋,手寫部分看不懂 10
2樓:
首先main()是主函式,通俗來說就是一個程式的入口,只能先執行main函式。
而題中的fun在main中被呼叫了,並且傳入的引數值是500從題目中得知,需要取 被13或17整除的數字下圖紅框可知,k就是那個除數,也就是500,所以int fun括號中輸入的應該是k
所以填入int k
最後題目要求最大十個,我也懶得說了
3樓:匿名使用者
main是主函式,fun是呼叫函式,按照這個思路去看就能明白了
哪位大蝦可以幫我解釋一道c語言的題目?我看不懂啊...給我讀讀這個程式 說的什麼意思呢??
4樓:匿名使用者
#include"stdio.h"
main()
//這裡沒有"break",繼續下一個"case "
case 1:switch(c) }}
//整個程式好像不是很完整。以上純屬個人理解。你看看
c語言的問題,不太理解這個函式,大神給解釋一下
5樓:自我程式設計
fgets函式原型
char *fgets(char *buf, int bufsize, file *stream);
引數*buf: 字元型指標,指向用來儲存所得資料的地址。
bufsize: 整型資料,指明儲存資料的大小。
*stream: 檔案結構體指標,將要讀取的檔案流。
含義:從檔案結構體指標stream中讀取資料,每次讀取一行。讀取的資料儲存在buf指向的字元陣列中,每次最多讀取bufsize-1個字元(第bufsize個字元賦'\0'),如果檔案中的該行,不足bufsize個字元,則讀完該行就結束。
如若該行(包括最後一個換行符)的字元數超過bufsize-1,則fgets只返回一個不完整的行,但是,緩衝區總是以null字元結尾,對fgets的下一次呼叫會繼續讀該行。函式成功將返回buf,失敗或讀到檔案結尾返回null。
下面我對你這個**補充說明:
stdin是c語言中標準輸入流,一般用於獲取鍵盤輸入所以** ret_val = fgets(st, n, stdin); 這裡意思:
從鍵盤讀入n位字元+結束'\0』存放到st陣列中。
而判斷if (ret_val)
輸入9個字元。列印前5個。
輸入4個字元。列印全部。
6樓:
char * s_gets(char *st, int n)
return ret_val;//返回}
7樓:匿名使用者
大致意思是一次從stdin讀取一行,最多n個字元, 如果n個裡面包含回車,擷取回車前面的
如果不包含回車,一致讀直到讀到回車
8樓:匿名使用者
返回一個指向字串的指標
求c語言題目,答案是1, 2,求解釋
如果while y 1 這個迴圈的結構體沒有錯的話,那麼要結束這個迴圈的條件是y 1。也就是說判斷之後執行y 得到y的結果是 2.內部while y 執行之前y的值就應該是0,再向前判斷,a y後a的值就是0,然後a 得到a的值就是1.前面那個迴圈條件就是當y不等於 1時,y自減1帶入下面運算,所以...
哪位高手幫忙改一下C語言程式,題目是(排序查詢),16,17有錯誤已標記出
你宣告函式時宣告的格式,和下面你定義時的格式不一樣啊 定義的格式和你用的格式一樣 你只要改了你宣告的格式就行了,宣告 定義和應用的格式要一樣才行啊。void sort int n,int score void seek int n,int score,int y void sort int n,in...
c語言題,幫忙詳細解釋一下,c語言的題,幫忙解釋一下,謝謝!!!
i 5時開始執行 if 語句 if i 4 printlf d i 輸出5i 表示先取i操作,再自增1 1表示先自增1,再取i操作所以這裡輸出 5 i 6 break 跳出for迴圈 不執行for語句裡的 i 跳出執行 printf d i i 6 i 表示先取i操作 所以輸出 6 最後i的值是7輸...