我找到了有关在数组中找到最长字符串并使用strrev()打印的代码。功能。 我的代码可以成功运行,但是如果我的第一个字符串大于其他字符串,则程序无法理解。
这是我的原型:
void LongStr(char str[][50],int n);
这是我的Main()函数:
int main()
{
char str[size][wsize];
int n;
printf("\n How many words to accept:- ");
scanf("%d",&n);
printf("\n Enter %d words:- \n \n",n);
for(int i = 0; i < n; i++)
scanf("%s", str[i]);
LongStr(str,n);
return 0;
}
这是我的LongStr();功能:
void LongStr(char str[][50],int n)
{
int Max = strlen(str[0]);
int len;
int c;
for(int i = 1; i < n; i++)
{
len = strlen(str[i]);
if( len > Max )
{
c = i;
Max = len;
}
}
printf("\n The longest string with reverse model is: \"%s\" \n \n",strrev(str[c]));
}
示例:
FirstString
SecondLongestString
ThirdString
输出:strrev(“ SecondLongestString”);
示例:
FirstString
SecondString
ThirdLongestString
输出:strrev(“ SecondLongestString”);
示例:
FirstLongestString
SecondString
ThirdString
输出:崩溃!
谢谢。
答案 0 :(得分:2)
如果最长的字符串是第一个library(dplyr)
library(lubridate)
#Ensure datetime are in POSIXct format
datagps$"Date & Time [Local]" <- dmy_hm(datagps$"Date & Time [Local]")
datasensor$"Time" <- dmy_hm(datasensor$"Time")
#Left join the data frames
left_join(datagps, datasensor, by = c("Date & Time [Local]" = "Time"))
,则永远不会初始化,这将使其成为垃圾,并且很可能为索引该数组提供了巨大的数字。
您应该将其初始化为0:
c
PS:尽管void LongStr(char str[][50],int n)
{
int Max = strlen(str[0]);
int len;
int c = 0;
// ...
}
不会发生此问题,但我还是说将其初始化为某种东西可能是一个好习惯。换句话说,初始化所有变量是一件好事。但是,我已经很长时间没有用len
编写代码了,而且我不确定这是否是常规代码。
答案 1 :(得分:1)
真的很简单,这只是代码中缺少的部分
int Max = strlen(str[0]);
int len;
int c;
您需要给c
赋予一个值,以说明为什么它不起作用,因为它没有基值,因此请尝试将代码更改为
int Max = strlen(str[0]);
int len;
int c = 0; // base value of 0