我将从用户那里获取输入,并从这10个字符串中找到最长的输入..
#include<stdio.h>
#include<conio.h>
void main() {
char str[10][10]
printf("Enter strings:")
scanf("%s", str)
}
如果我像这样输入用户输入,它会将字符串存储在str二维数组中吗?为了找出最长的字符串,我会找到每个字符串的长度,并使用max_length函数来确定最长的字符串。
答案 0 :(得分:5)
您不需要存储所有字符串,只是存储到目前为止输入的最长字符串。 请注意,您确实需要定义字符串的最大长度以避免缓冲区溢出。
例如:
#define MAX_STRING_SIZE 1024
char last_entered_string[MAX_STRING_SIZE];
char longest_entered_string[MAX_STRING_SIZE] = ""; /* Must be initialized. */
scanf("%1023s", last_entered_string); /* Read one less to allow for
null terminator. */
使用循环接受十个输入并与最长的字符串进行比较。如果最后输入的字符串较长,则将其复制到最长的字符串中。由于这是作业,我不会提供任何进一步的代码。
答案 1 :(得分:1)
不,它不会。你必须遍历并阅读所有字符串。
for(i=0;i<10;i++)
scanf("%s", str[i]);
另外,你错过了一些分号!
答案 2 :(得分:0)
您可以找到最长的字符串,并将其保存到收到的所有字符串中。
int main()
{
char *str = NULL;
char *compare;
printf("Enter strings:");
scanf("%s", compare);
if (strlen(str) < strlen(compare))
str = strdup(compare);
return(0);
}
如果您想存储所有用户输入(考虑到用户只能输入10个字符串),您可以这样做:
int main()
{
char **array;
char *str;
int x = 0;
int shortest;
array = malloc(sizeof(char*) * 10);
while (x < 10)
{
scanf("%s", str)
array[x] = strdup(str);
x++;
}
x = 0;
shortest = x;
while (x < 10)
{
if (strlen(array[x]) > strlen(shortest))
shortest = x;
x++;
}
return (0);
}
shortest将是数组中最长字符串的索引。
我希望这会对你有所帮助。
答案 3 :(得分:0)
将所有输入存储在数组中,然后在数组条目长度上执行qsort()
,然后执行第一个(或最后一个,具体取决于排序方式)条目。
好的,好的...... - 这可能是过度设计的......; - )
答案 4 :(得分:0)
我认为您可以做的是采用嵌套循环并在行中搜索'\0'
字符并同时运行计数器。一旦发现'\0'
停止计数器并将计数器的值存储在单独的数组中。所以现在你将有一个10个整数的数组。
现在搜索数组中的最小整数和...宾果!
相应的行将具有最短的字符串。
我知道这种方法非常原始,但我认为这对只有C基础知识的人有用。
答案 5 :(得分:0)
所呈现的程序将从用户获取10个输入字符串,然后最终打印出最长的字符串及其长度。它不会存储任何其他输入字符串而不是最大的输入字符串。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STR_LEN 1024
int main(int argc, char **argv){
char str_final[MAX_STR_LEN];
char str_temp[MAX_STR_LEN];
unsigned int i, j, len_str;
unsigned int num_string = 10;
unsigned int len_max = 0;
for (i=0; i<num_string; i++){
printf("Enter string number: %d\n", i);
gets(str_temp);
for (j=0; str_temp[j]; j++);
len_str = j;
if(len_str > len_max){
len_max = len_str;
memset(str_final, 0, MAX_STR_LEN);
memcpy(str_final, str_temp, len_str);
}else{
memset(str_temp, 0, MAX_STR_LEN);
}
}
printf("The biggest string is: %s\n", str_final);
printf("It's size is: %d\n", len_max);
exit(EXIT_SUCCESS);
}