#include "stdafx.h"
#include <iostream>
#include <string.h>
using namespace std;int _tmain(int argc, _TCHAR* argv[])
{char str1[] = "12345"; // ""括起來的字符串 會在末尾增加 \0 cout << sizeof(str1) << endl; // 6char str2[] = {'1', '2', '3'}; // 這種賦值方式不會在末尾增加 \0cout << sizeof(str2) << endl; // 3//cout << str2 << endl; // 因為沒有 C語言字符串結束標志所以 會多輸出很多垃圾字符// 而且還影響手續代碼的執行cout << strlen(str2) << endl; // 17 數字不確定 因為沒有結束標志 \0cout << strlen(str1) << endl; // 5 長度不包括 結束標志char str3[] = { '1', '2', '3', '\0' }; // 手動加上結束標志cout << strlen(str3) << endl; // 3 長度不包括 結束標志cout << "-----------" << endl;char str4[100] = "The URL is ";char str5[50] = "12345";cout << sizeof(str4) << endl; // 100 占用的字節數cout << strlen(str4) << endl; // 11 字符串實際的長度cout << str4 << "end?" << endl; // The URL is end?cout << "C 語言字符串拼接函數 strcate_s" << endl;//strcat_s() 將把 arrayName2 連接到 arrayName1 后面,并刪除原來 arrayName1 最后的結束標志'\0'。這意味著,arrayName1 必須足夠長,要能夠同時容納 arrayName1 和 arrayName2,否則會越界(超出范圍)。// strcat_s() 的返回值為 arrayName1 的地址。strcat_s(str4, str5);cout << str4 << endl;cout << "---------char *--------------" << endl;char *str6 = "12345678";char *str7 = "abcdefg";cout << sizeof(str6) << endl; // 4 這樣只返回一個指針占用的 字節數cout << strlen(str6) << endl; // 8 返回字符串的長度 cout << str6[8] << endl; // 這里應該是字符串結束標志 \0// strcat_s 不能作用于 char * 類型的// strcpy_s 也不能作用域 strcpy_s;cout << str6 << endl;cout << "----C 語言字符串復制函數 strcpy_s------" << endl;char str8[50] = "abcdefg";char str9[50] = "wocawocawoca";strcpy_s(str8, str9);cout << str8 << endl; //wocawocawoca//strcpy_s(arrayName1, arrayName2); 會把 arrayName2 中的字符串拷貝到 arrayName1 中,字符串結束標志'\0'也一同拷貝。strcpy() 要求 arrayName1 要有足夠的長度,否則不能全部裝入所拷貝的字符串。return 0;
}