编写一个程序,读取一个短字符串和一个较长的字符串,并检查较长的字符串是否以短字符串的字母开头。使用 strncmp

Write a program that reads a short string and a longer string and checks if the longer string starts with the letters of the short string. Use strncmp

我需要帮助才能使此代码正常工作。有人可以告诉我如何正确使用 strncmp 以及如何让它工作吗?

这是我的代码:

#include <stdio.h>  
#include<string.h>  
int main()  
{  
   char str1[20];   
   char str2[20];    
   int value;   
   printf("Enter the first string right here: ");  
   scanf("%s",str1);  
   printf("Enter the second string right here: ");  
   scanf("%s",str2);  
    
   value=strncmp(str1,str2);  
   if(value==0)  
   printf("Your strings are the same");  
   else  
   printf("Your strings are not same");
  
   return 0;  
  }

下面是我的错误代码

main.c:13:27: error: too few arguments to function call, expected 3, have 2
   value=strncmp(str1,str2);  
         ~~~~~~~          ^
1 error generated.
make: *** [<builtin>: main.o] Error 1
exit status 2 ```

调用函数strncmp之前

value=strncmp(str1,str2); 

你应该检查 str1 确实不小于 str2 反之亦然,因为在你的程序中不清楚用户在哪里输入了更短的字符串以及他输入了更大的字符串字符串.

但无论如何,函数 strncmp 需要三个参数。

至少你得写

value=strncmp(str1,str2, strlen( str2 )); 

函数声明为

int strncmp(const char *s1, const char *s2, size_t n);

你可以这样写

size_t n1 = strlen( str1 );
size_t n2 = strlen( str2 );

value = strncmp( str1, str2,  n2 < n1 ? n2 : n1 ); 

而且printf调用中的文本不满足赋值

printf("Your strings are the same"); 
printf("Your strings are not same");

你不是在判断两个字符串是否相等。您需要确定一个字符串的开头是否包含另一个字符串。