c中字符串最小长度的个数

  • 本文关键字:字符串 c
  • 更新时间 :
  • 英文 :


我想编写一个程序,打印字符串最小长度的个数。我有一个单词文件,我从stdin打开并保存到缓冲区。

到目前为止,我的代码输出了每个单词的长度。但是我不知道如何比较这些数字。

例如:

Hello
Hi

我的程序做:

6
3

输出应该是:

3

我不知道如何继续。你有什么建议吗?

#include <stdio.h>
int min_stat(char str[])
{
int min=0;
for(int i=0; str[i] != ''; i++)
{
min++;   
}
return min;
}
int main(int argc, char *argv[])
{
if(argc < 1){
fprintf(stderr,"Errorn");
return 1;
}
char param = argv[1][0];
int val=100;
char buffer[val];
if(param == '1')
{
while(fgets(buffer, val, stdin) != NULL)
{
int a = min_stat(buffer);
printf("%dn", a);
}  
}
return 0;
}

您需要将字符串的最小长度保存在某个地方,并在检测到更短的字符串时更新它。您的min_stat函数返回字符串的字符数。

我会这样写:

#define MAX_LENGHT 1000
int main(int argc, char *argv[])
{
if(argc < 1){
fprintf(stderr,"Errorn");
return 1;
}
char param = argv[1][0];
int val=100;
char buffer[val];
/* the maximum possible lenght */
int min_lenght = MAX_LENGHT;
if(param == '1')
{
while(fgets(buffer, val, stdin) != NULL)
{
int a = min_stat(buffer);

/* update the mimimum lenght if it is smaller 
than the current value */
if (a < min_lenght) {
min_lenght = a;
}
printf("%dn", a);
}  
}
/* print the minimum lenght */
printf("Minimum: %dn", min_lenght);
return 0;
}

你不应该使用变量来初始化char数组,因为你使用的是可变长度数组(VLA)而不是静态数组。如果你正在学习c语言,你应该使用静态数组,所以:

char buffer[MAX_LENGHT];

其中MAX_LENGHT为常量或预处理器定义。

相关内容

  • 没有找到相关文章

最新更新