gpt4 book ai didi

比较、组合和确定字符串的长度?

转载 作者:太空宇宙 更新时间:2023-11-04 04:46:22 29 4
gpt4 key购买 nike

我想知道是否有人可以帮助我完成这个程序。编写一个接受两个字符串的函数。该函数应该将这两个字符串与字典顺序上排在第一位的字符串组合起来。两个字符串之间应该有一个空格。在一行上打印结果字符串。在一行上打印结果字符串的长度。

#include <stdio.h>
#include <string.h>

int main (){

char word1[10];
char word2[10];
int length;

//getting the words from input given by the user
printf("Enter the first word. (10 Letters or less)\n");
scanf("%s", word1);
printf("Enter the second word. (10 Letters or less)\n");
scanf("%s", word2);

//comparing the two words entered
if (strcmp(word1, word2)>0)
printf("%s comes before %s\n", word2, word1);
else if (strcmp(word1, word2)<0)
printf("%s comes before %s\n", word1, word2);
else
printf("Both words are the same!\n");

//combining the two words
strcat(word1, " ");
strcat(word1, word2);
printf("\n%s\n", word1);

//looking at the length of the two words
length = strlen(word1) + strlen(word2) - 1;
printf("The length of the words are %d.\n", length);

return 0;
}

这是我上面的代码。我决定打印出哪个词最先出现在我自己的可视化中。我不确定如何组合这些词,以便按字典顺序排在第一位的词排在第一位,以及如何确定两者的结果组合的长度。我认为在组合单词时加上负 1 会消除空格的影响,但是当我将不同的单词放入程序中时,字符串长度总是相差不同的数字。任何帮助将不胜感激,谢谢。

最佳答案

将内存分配留给调用者的版本:

/** Return 0 if not enough space, else length of resultant string. */
int stringOrder(const char * const str1, const char * const str2, char* retBuf, int bufLen)
{
const char* first = str1;
const char* second = str2;
int requiredLength = strlen(str1) + strlen(str2) + 2;

if (requiredLength > bufLen)
return 0;

if(strcmp(str1, str2) == 1)
{
first = str2;
second = str1;
}

strcpy(retBuf, first);
strcat(retBuf, " ");
strcat(retBuf, second);

return requiredLength - 1;
}

用法如下:

    #define LENGTH 128
const char* str1 = "world";
const char* str2 = "hello";

char result[128] = "";

int ok = stringOrder(str1, str2, result, LENGTH);

if (ok)
printf("%s\n", result);
else
printf("Not enough space");

关于比较、组合和确定字符串的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20483052/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com