我正在尝试编写一个比较用户输入的字符串的程序。我已经可以找到最长的字符串和“ max”(第一个不等字符的最大ASCII码),但是我不知道如何从列表中找到重复字符串的第一个实例。到目前为止,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char words[50], max[50], longest[50], dupe[50];
int n, c, x, dupepos;
dupe[0] = '\0';
max[0] = '\0';
longest[0] = '\0';
scanf("%d", &n);
for(c = 0; c <= n; c++) {
fgets(words, 50, stdin);
x = strcmp(max, words);
if(strlen(words) > strlen(longest)) strcpy(longest, words);
if(x < 0) strcpy(max, words);
}
printf("Longest: %s", longest);
printf("Max: %s", max);
// if(dupe == 0) printf("UNIQUE (no dupes)\n");
// else printf("First dupe found at position %d: %s\n", dupepos, dupe);
return 0;
}
我注释掉了if语句,用于显示重复项,因为它目前无法使用。我可以使用以下数组对整数执行相同的程序:
for(int c = 0; c < n; c++) {
scanf("%d", &num);
unique[num]++;
if(unique[num] > 1 && dupe == 0) dupe = num;
}
我基本上想对字符串列表进行相同的操作。如果有更简单的方法来完成我的任务,那将受到欢迎!
如果测试文件如下所示:
7
The first line
fun
let x be 19
8 > 3
bracket
fun
Turkey
它应该输出以下内容:
Longest: The first line
Max: let x be 19
First dupe found at position 6: fun
如果测试文件如下所示:
5
The first line
let x be 19
8 > 3
{bracket}
turkey
它应该输出以下内容:
Longest: The first line
Max: {bracket}
UNIQUE (no dupes)