C語言字串測試

2022-10-10 12:12:08 字數 1594 閱讀 3321

今天寫**用到了字串,需要利用字串結尾符'\0'判斷是否遍歷完畢,然後產生了相應的困惑

1.字串陣列是否都具有結尾符?

2.二維字串陣列每一行是否等同於一維字串陣列?

首先說結論:c語言字串陣列都具有結尾符'\0';二位字串陣列每一行等同於一維字串陣列;

執行一下測試**:

#include using namespace std;

int main() ; //等同於 char str1 = "123";

char str2[3] = ; //人工新增結尾符

char str3[3] = ; //不規範

char str3_2[3] = ;

// char str4[3] = ; //宣告錯誤,檢測到陣列空間不足

printf("輸出str1:");

for (i = 0; str1[i]; i++)

printf("%c", str1[i]);

printf("\nstr1結尾符的位置: %d", i);

printf("\n");

printf("輸出str2:");

for (i = 0; str2[i]; i++)

printf("%c", str2[i]);

printf("\nstr2結尾符的位置: %d", i);

printf("\n");

printf("輸出str3:");

for (i = 0; str3[i]; i++)

printf("%c", str3[i]);

printf("\nstr3結尾符的位置: %d", i);

printf("\n");

printf("輸出str3_2:");

for (i = 0; str3_2[i]; i++)

printf("%c", str3_2[i]);

printf("\nstr3_2結尾符的位置: %d", i);

return 0;

}

執行結果:

分析:列舉出可能的賦值形式 ,並最終判斷結尾符'\0'來結束輸出。由於每次都能輸出'\0'的位置數值,可以確定字串陣列結束符一定存在。但如果以不規範的形式賦值,即如同上述str3的形式,結束符空間將不能確定,可能用到了別的 變數的空間。如果單獨以不規範的形式測試,則結果會是結束符位置的值為陣列空間大小加1(原因暫時未找到),如下圖:

#include using namespace std;

int main() ; //不規範

C語言字串 字串排序

本題要求編寫程式,讀入5個字串,按由小到大的順序輸出。輸入為由空格分隔的5個非空字串,每個字串不包括空格 製表符 換行符等空白字元,長度小於80。按照以下格式輸出排序後的結果 after sorted 每行乙個字串 red yellow blue green white after sorted b...

C語言 字串

char str lnj 字串變數 l n j 0 printf str size lu n sizeof str 字元陣列 這個並不是字串,而是字元陣列 char charvalues 如何輸出字串變數,s str 陣列的名稱,陣列的名稱就是陣列的位址 s的原理,從傳入的 位址 開始逐個取出,直到...

c語言字串

字串 字串1 概念 1.1 定義 1.1.1 用雙引號引起來的多個字元 1.2 兩個連續的雙引號中間是空格或回車,則兩個字串自動連在一起 1.3 遇見 0字串結束,0可以提前終止字串 1.4 初始化 1.4.1 char str 6 1.4.2 char str hello 編譯時自動給 加6 1....