鱼C论坛

 找回密码
 立即注册
查看: 1475|回复: 2

字符串

[复制链接]
发表于 2021-9-11 19:45:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdbool.h>

  4. #define N 50
  5. #define DAYS 31

  6. int read_line(char s[]);
  7. int reminder(char s[][N]);

  8. int main(void){
  9.         char s[DAYS][N] = {'\0'};
  10.         int day;
  11.         while (true){
  12.                 printf("day and remind: ");
  13.                 scanf("%d", &day);
  14.                 if (day < 1 || day > DAYS){
  15.                         reminder(s);
  16.                         break;
  17.                 }
  18.                 else
  19.                         read_line(s[day-1]);
  20.         }

  21.         return 0;
  22. }

  23. int read_line(char s[]){
  24.         char str[N];
  25.         char ch;
  26.         int i = 0;
  27.         while ((ch = getchar()) != '\n')
  28.                 str[i++] = ch;
  29.         str[i] = '\0';
  30.         strcat(s, str);
  31.         return 0;
  32. }

  33. int reminder(char s[][N]){
  34.         for (int i = 0; i < DAYS; i++)
  35.                 if (s[i][0] != '\0')
  36.                         printf("%d: %s\n", i+1, s[i]);
  37.         return 0;
  38. }
复制代码


运行的结果如下图所示,我只是让它在第二次输入相同日期的备忘事时拼接在对应的字符串后面,可是打印输出中间为什么有个空格,这是什么情况???
字符.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-11 20:18:06 | 显示全部楼层
开头你只打了一个空格,但是确实两个空格的距离,所以说在一开始 strcat 的时候就有了你说的空格了,所以后边才有一个空格,和前边一样
没用过strcat,你去百度看看。
1631362378(1).jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-11 21:13:51 | 显示全部楼层
Max472 发表于 2021-9-11 20:18
开头你只打了一个空格,但是确实两个空格的距离,所以说在一开始 strcat 的时候就有了你说的空格了,所以后 ...

可是我这样的话却没有空格是为什么呢?[img][/img]
new.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 13:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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