c - 打印多次写入的单词 1 次
问题描述
我有一个这样的数组:
array[][100]={"pencil","pen","book","eraser","pen","bag","bag","pencil",......}
如果数组中有多个相同的单词,我只想打印一次。(结果=铅笔笔书橡皮擦包)。我该怎么做这个usig数组[i]?谢谢...
解决方案
这对我来说很好。不过,我并没有在它的内存优化上做太多工作。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXLEN 100
int main() {
char arr[][MAXLEN] = {"pencil", "pen", "book", "eraser", "pen", "bag", "bag", "pencil"};
int n = sizeof(arr)/sizeof(arr[0]), c = 0, inArray = 0, i, j;
char **result = malloc(n * sizeof(char *));
for (i = 0; i < n; i++)
result[i] = malloc(MAXLEN);
for (i = 0; i < n; i++) {
inArray = 0;
for (j = 0; j < c; j++)
if (!strcmp(arr[i], result[j])) {
inArray = 1;
break;
}
if(!inArray)
strcpy(result[c++], arr[i]);
}
for (i = 0; i < c; i++)
printf("%s ", result[i]);
free(result);
return 0;
}
推荐阅读
- laravel - Laravel - 在中间件中删除 Cookie
- asp.net-core - 如何从 Razor 页面中的选择列表将变量路由到另一个页面
- graphql - CQRS 命令和 GraphQL 突变
- php - 教义实体验证是否足够?
- javascript - 如何将道具传递给vue Js中的样式对象
- java - 当进行手动 CRUD 操作时,可以通知/查看 Hibernate 吗?
- javascript - React 中的复选框管理
- python - 矩形未在屏幕上绘制
- r - 安装 R v4.0.2 后 save_kable 不起作用
- c++ - 如何计算每个骨骼的起始矩阵(t-pose)(使用 collada 和 opengl)