試題1
#include #include int main()
這題str1有11個元素,string只有10個元素,拷貝的時候,記憶體不夠,陣列越界,會出現錯誤。
試題2
#include #include int main()
strcpy(string, str1);
return 0;
}
這題strcpy函式是以『\0』標誌結束拷貝的,但是for迴圈結束後,str1並沒有加『\0』,strcpy無法判斷拷貝的結束時間。其次,在12行之前加上str[i]='\0',答案還是有問題的,因為這個時候str1陣列越界了。
試題3
#include #include void test(char* str1)
return 0;
}
這題if語句比較的是strlen(str1),當strlen(str1)等於10的時候,str1實際長度為strlen(str1)+1,這個時候拷貝給string,陣列越界。
#include #define max 255
int main(char* str1)
return 0;
}
這裡for迴圈終止條件出現錯誤,unsigned char的範圍是0~255,所以判斷條件一直為真,導致無限迴圈,應將判斷條件改為i
#include int main(char* str1)
, *p;
p = a;
printf("%d\n", *(p+4*sizeof(int)));
return 0;
}
第6行中將p的值賦為陣列首位址,那麼p+4已經到最後乙個元素了,*(p+4*sizeof(int))指向了陣列第17個元素了,已經越界。
#include int my_strlen(char* str)
int len = 0;
while(*str++ != '\0') len++;
return len;
}int my_strlen2(char* str)
char* pstr = str;
while(*str++ != '\0');
return (str - pstr - 1);
}int main()
這裡寫了兩種方法實現strlen的功能,第一種while迴圈遍歷的時候需要進行兩次自加,小號的資源比第二種多,第二種先儲存初始位址,while迴圈只是str的自加,效率更高。
請寫乙個函式,實現從乙個字串中,查詢另乙個字串的位置,如strstr("12345", "34")返回值為2,即在2號位置找到字串「34」
#include const char* my_strstr(const char* str1, const char* str2)
while(*str1)
}str1++; }}
int main()
比較步驟:(1)「12345」和「34」比較,不滿足匹配
(2)「2345」和「34」比較,不滿足匹配
(3)「345」和「34」比較,滿足匹配
輸出:
r:345
C C 字串型別的用法整理筆記
字串型別,即string型別,因為使用方便,不必擔心記憶體問題,越界問題等等,還有在不太確定即將存入的字串長度的時候使用是非常好的。本片中,將會對string型別的字串和char型別的字串對比使用講解,作為隨筆筆記,記錄常用的用法,同時也會隨著見識的增長隨時更新 string 型別字串在使用的時候需...
字串 簡單 1544 整理字串
題目 給你乙個由大小寫英文本母組成的字串 s 乙個整理好的字串中,兩個相鄰字元 s i 和 s i 1 其中 0 i s.length 2 要滿足如下條件 若 s i 是小寫字元,則 s i 1 不可以是相同的大寫字元。若 s i 是大寫字元,則 s i 1 不可以是相同的小寫字元。請你將字串整理好...
字串相減 c c
string a goodluck string b luck int length strlen a.c str strlen b.c str string c a.substr 0,length 主要是substr 的用法 返回乙個從指定位置開始,並具有指定長度的子字串。引數 start 必選。...