C语言中使用循环打印字符串的所有方法有哪些
C语言循环打印字符串的实现方式
首先修正你提供的测试代码的逻辑问题:你写的循环终止条件x < testArray不合法,testArray是二维数组的首地址,直接和整型变量比较会导致数组越界访问,无法正常运行。
以下是所有常见的实现方式:
遍历字符串数组打印的实现
1. 固定长度数组用for循环遍历
这是最常用的方式,通过sizeof运算提前计算数组元素总数:
#include <stdio.h> int main() { char testArray[][50] = {"Mango", "Strawberry", "Bannana", "Cherry"}; // 计算数组元素总个数 int arrLen = sizeof(testArray) / sizeof(testArray[0]); for(int x = 0; x < arrLen; x++){ // 加\n换行区分每个字符串,不需要可以去掉 printf("%s\n", testArray[x]); } return 0; }
2. 带哨兵标记的数组遍历
在数组末尾添加NULL作为结束标识,不需要提前计算长度,适合动态增减元素的场景:
#include <stdio.h> int main() { // 末尾增加NULL作为结束哨兵,数组类型改为char*指针数组 char *testArray[] = {"Mango", "Strawberry", "Bannana", "Cherry", NULL}; for(int x = 0; testArray[x] != NULL; x++){ printf("%s\n", testArray[x]); } return 0; }
3. 指针偏移遍历
通过数组指针偏移实现遍历:
#include <stdio.h> int main() { char testArray[][50] = {"Mango", "Strawberry", "Bannana", "Cherry"}; int arrLen = sizeof(testArray) / sizeof(testArray[0]); // p是指向长度为50的char数组的指针 char (*p)[50] = testArray; for(int x = 0; x < arrLen; x++){ printf("%s\n", p++); } return 0; }
4. while循环实现
#include <stdio.h> int main() { char testArray[][50] = {"Mango", "Strawberry", "Bannana", "Cherry"}; int arrLen = sizeof(testArray) / sizeof(testArray[0]); int x = 0; while(x < arrLen) { printf("%s\n", testArray[x++]); } return 0; }
逐字符打印单个字符串的实现
如果需要打印单个字符串的每一个字符,可使用以下两种方式:
1. 下标遍历
#include <stdio.h> int main() { char str[] = "Test String"; for(int i = 0; str[i] != '\0'; i++) { printf("%c", str[i]); } return 0; }
2. 指针遍历
#include <stdio.h> int main() { char str[] = "Test String"; char *p = str; while(*p != '\0') { printf("%c", *p++); } return 0; }
内容的提问来源于stack exchange,提问作者Ismail Mansuri
相关产品推荐
相关产品推荐

