定义char a[6][32]={"AAA","BBB","CCC","CCC","CCC,"DDD"},
如何去除数组a中的重复字符串元素?去百度找了找什么双重循环的方法,但是如果有连续3个数一样就会出问题。有没有哪位大佬给指教一下?如果能提供代码希望能测试一下
C语言,如何去除字符串数组中的重复元素
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答
- HappyerMano 2017-07-19 09:56关注
// test1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <string> using namespace std; #define STR_NUM 11 bool contain(int num, int flag[], int count) { for (int i = 0; i < count; ++i) { if (flag[i] == num) return true; } return false; } int _tmain(int argc, _TCHAR* argv[]) { int flag[STR_NUM] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };//标记哪些字符串重复了,重复的取大的索引值 int i = 0; char a[STR_NUM][32] = { "AAA", "BBB", "CCC", "CCC", "CCC", "DDD", "DDD", "EEE", "FFF", "DDD", "GGG" }; char res[STR_NUM][32] = {}; for (int n = 0; n < STR_NUM; ++n) { for (int m = n + 1; m < STR_NUM; ++m) { if (strcmp(a[n], a[m]) == 0) { flag[i++] = m; } } } //这样循环以后,flag内就存储了重复的字符串的索引 i = 0; for (int n = 0; n < STR_NUM; ++n) { if (!contain(n, flag, STR_NUM)) { strcpy_s(res[i], a[n]); cout << "res[" << i << "]:" << res[i] << endl; i++; } } cin.get(); return 0; }
经测试可以实现你的需求
解决 无用评论 打赏 举报
悬赏问题
- ¥15 孟德尔随机化结果不一致
- ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
- ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
- ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
- ¥15 谁有desed数据集呀
- ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
- ¥15 关于#hadoop#的问题
- ¥15 (标签-Python|关键词-socket)
- ¥15 keil里为什么main.c定义的函数在it.c调用不了
- ¥50 切换TabTip键盘的输入法