鱼C论坛

 找回密码
 立即注册
查看: 1038|回复: 1

输出不对

[复制链接]
发表于 2023-12-1 18:13:56 | 显示全部楼层 |阅读模式
本帖为密码帖 ,请输入密码 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-1 18:14:20 | 显示全部楼层
您的代码中存在一些错误和不足之处。以下是对代码的具体修改和解释:

1. 在包含正确的头文件之前,应该包含`#include <stdio.h>`以及`#include <string.h>`。

2. 字符型变量`x`和`y`应该声明为字符数组,而不是单个字符。例如,`char x[MAX_SIZE];`

3. 变量`result`应该声明为字符数组,而不是字符。例如,`char result[MAX_SIZE] = "";`

4. 在使用`fgets`函数时,在每行输入后会自动包含换行符(`\n`),需要将其删除。可以使用`strtok`函数将字符串的末尾的换行符去掉。例如,`strtok(x, "\n");`

5. 在字符串比较时,应该使用`strcmp`函数,而不是`==`运算符。例如,`if (strcmp(x, y) == 0)`

6. `strcpy`函数用于复制字符串,但在使用前需要确保目标字符串有足够的空间。在这种情况下,可以使用`strncpy`函数来复制字符串,并指定目标字符串的长度。例如,`strncpy(result, x, MAX_SIZE);`

7. 如果没有找到相同的字符串,`result`仍然为空字符,因此在比较`result`时应该使用`strcmp(result, "") == 0`来检查是否为空。

8. 注意,使用`fgets`函数读取一行字符串后,会自动将换行符也存储在字符串中。您可以使用`strtok`函数将换行符去掉,或者在比较时忽略换行符。

以下是更新后的代码:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define MAX_SIZE 100
  4. int main() {
  5.     char x[MAX_SIZE];
  6.     char y[MAX_SIZE];
  7.     int n, m, i, j;
  8.     char result[MAX_SIZE] = "";
  9.    
  10.     while (scanf("%d%d", &n, &m) != EOF) {
  11.         getchar();  // 处理输入缓冲区中的换行符
  12.         
  13.         for (i = 0; i < n; i++) {
  14.             fgets(x, MAX_SIZE, stdin);
  15.             strtok(x, "\n");  // 去掉末尾的换行符
  16.         }
  17.         
  18.         for (i = 0; i < m; i++) {
  19.             fgets(y, MAX_SIZE, stdin);
  20.             strtok(y, "\n");  // 去掉末尾的换行符
  21.         }
  22.         
  23.         for (i = 0; i < n; i++) {
  24.             for (j = 0; j < m; j++) {
  25.                 if (strcmp(x, y) == 0) {
  26.                     if (strcmp(result, x) < 0 || strlen(result) == 0) {
  27.                         strncpy(result, x, MAX_SIZE);
  28.                     }
  29.                 }
  30.             }
  31.         }
  32.         
  33.         if (strcmp(result, "") == 0) {
  34.             puts("sad!");
  35.         } else {
  36.             puts(result);
  37.         }
  38.     }
  39.    
  40.     return 0;
  41. }
复制代码

希望这可以满足您的需求!如果有任何问题,请随时向我提问。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 00:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表