C中第一个字母的连接,无论大写和小写
Concatenation of first letter alike regardless of upper and lower case in C
我一直在弄清楚如何组合首字母相同的字符串,无论大小写如何。我有一个代码,如果你输入
babe,two,Bird,Tea
输出总是这样
babe,Bird,Tea,two
但是我想看到的输入是这样的
babeBird,Teatwo
我要在我的代码中添加或更改什么才能做到这一点。这是我的代码:
#include<stdio.h>
#include<string.h>
#include <ctype.h>
int main()
{
char str1[1000][1000], str[1000], temp[1000];
int n, i, p, j, a;
char *ptr, *ptr1, letter;
printf("Enter how many arrays: ");
scanf("%d", &n);
for(i=0; i<n; i++)
{
printf("Enter string %d: ", i+1);
scanf("%s", &str1[i]);
}
for(i=0; i<n-1; i++)
{
for(j=i+1; j<n; j++)
{
if (tolower((unsigned char)str1[i][0]) == tolower((unsigned char)str1[j][0])
){
strcpy(temp, str1[i]);
strcpy(str1[i], str1[j]);
strcpy(str1[j], temp);
}
if(strcasecmp(str1[i], str1[j])>0)
{
strcpy(temp, str1[i]);
strcpy(str1[i], str1[j]);
strcpy(str1[j], temp);
}
}
}
for(i=0; i<n; i++)
{
if (i != 0)
{
else if (str1[i][0] != letter)
{
printf(",");
}
}
{
printf("%s", str1[i]);
letter = str1[i][0];
}
}
}
以下代码决定是否打印逗号
if (str1[i][0] != letter)
进行区分大小写的比较。
将其更改为
if (tolower(str1[i][0]) != tolower(letter))
但是,该代码包含多个错误(太多而无法全部指出),因此不确定它是否有效。您可能想要进行调试。
我一直在弄清楚如何组合首字母相同的字符串,无论大小写如何。我有一个代码,如果你输入
babe,two,Bird,Tea
输出总是这样
babe,Bird,Tea,two
但是我想看到的输入是这样的
babeBird,Teatwo
我要在我的代码中添加或更改什么才能做到这一点。这是我的代码:
#include<stdio.h>
#include<string.h>
#include <ctype.h>
int main()
{
char str1[1000][1000], str[1000], temp[1000];
int n, i, p, j, a;
char *ptr, *ptr1, letter;
printf("Enter how many arrays: ");
scanf("%d", &n);
for(i=0; i<n; i++)
{
printf("Enter string %d: ", i+1);
scanf("%s", &str1[i]);
}
for(i=0; i<n-1; i++)
{
for(j=i+1; j<n; j++)
{
if (tolower((unsigned char)str1[i][0]) == tolower((unsigned char)str1[j][0])
){
strcpy(temp, str1[i]);
strcpy(str1[i], str1[j]);
strcpy(str1[j], temp);
}
if(strcasecmp(str1[i], str1[j])>0)
{
strcpy(temp, str1[i]);
strcpy(str1[i], str1[j]);
strcpy(str1[j], temp);
}
}
}
for(i=0; i<n; i++)
{
if (i != 0)
{
else if (str1[i][0] != letter)
{
printf(",");
}
}
{
printf("%s", str1[i]);
letter = str1[i][0];
}
}
}
以下代码决定是否打印逗号
if (str1[i][0] != letter)
进行区分大小写的比较。
将其更改为
if (tolower(str1[i][0]) != tolower(letter))
但是,该代码包含多个错误(太多而无法全部指出),因此不确定它是否有效。您可能想要进行调试。