如何用C语言实现查找表格中首个以'n'结尾的短语?
解决C语言查找首个以'n'结尾短语的问题
先修正并完成你的代码,实现需求:
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef char TTablaFrases[5][80]; // 存储5个最长79字符的短语(含字符串结束符) // 查找首个以'n'结尾的短语并打印,返回其索引;未找到返回-1 int FraseAcabadaEnN(TTablaFrases tabla) { // 遍历表格中的每个短语 for (int i = 0; i < 5; i++) { // 跳过空字符串,避免越界访问 if (tabla[i][0] == '\0') continue; // 获取字符串长度,定位最后一个字符 size_t len = strlen(tabla[i]); if (tabla[i][len - 1] == 'n') { printf("找到首个以'n'结尾的短语:%s\n", tabla[i]); return i; } } printf("未找到以'n'结尾的短语\n"); return -1; } int main(void) { TTablaFrases miTabla; // 清空数组,避免未初始化的垃圾值干扰判断 memset(miTabla, 0, sizeof(miTabla)); strcpy(miTabla[0], "First phrase"); strcpy(miTabla[1], "Second phrase n"); strcpy(miTabla[2], "Third phrase"); // 调用查找函数 FraseAcabadaEnN(miTabla); return 0; }
关键说明:
- 遍历逻辑:循环覆盖
TTablaFrases定义的5个短语位置,确保检查所有有效元素。 - 空串防护:先判断字符串是否为空,避免
strlen返回0后访问tabla[i][-1]的越界错误。 - 字符定位:用
strlen获取字符串长度,最后一个有效字符的下标为len-1,直接匹配'n'即可。 - 数组初始化:添加
memset清空整个数组,避免未赋值的元素残留垃圾值影响判断。 - 返回值设计:找到短语返回对应索引,未找到返回-1,方便后续扩展逻辑。
运行代码后会输出:
找到首个以'n'结尾的短语:Second phrase n
内容的提问来源于stack exchange,提问作者Roberto Guarneros
相关产品推荐
相关产品推荐

