1163028233 发表于 2021-12-15 18:03:06

C语言字符串中插入空格问题

输入一个4位数字,要求输出这4个数字字符,但每两个数字空间一个空格,输入1990,应输出“1 9 9 0”。
#include<stdio.h>
#include<string.h>
int main(){
    void insert(char[]);
    char str;
    printf("input four digits:");
    scanf("%s",str);
    printf("%d\n",strlen(str));
    insert(str);
    return 0;
}
void insert(char str[]){
    int i;
    for(i=strlen(str);i>0;i--){
      str=str;
      str=' ';
    }
    printf("output:\n%s\n",str);
}
这两行代码是什么意思?
      str=str;
      str=' ';
按照输入1990是4个字符,那str就是str,str赋值给str,那str中的i就是2吗?
那i--后i=3,str=str,i=1.5?问题是i是整数不能等于1.5,所以我的理解应该是错误的

jackz007 发表于 2021-12-15 18:35:41

本帖最后由 jackz007 于 2021-12-15 18:38 编辑

#include<stdio.h>

char * insert(char str[])
{
      for(int i = 0 ; i < 4 ; i ++) str = str   ;
      str = ' '                                              ;
      return str                                                ;
}

int main()
{
      char str                                              ;
      int i                                                   ;
      printf("input four digits : ")                            ;
      for(i = 0 ; i < 4 && (str = getchar()) != '\n' ; i ++) ;
      if(i == 4) {
                str = '\0'                                     ;
                printf("%s\n" , insert(str))                      ;
      }
}

傻眼貓咪 发表于 2021-12-15 19:14:04

#include <stdio.h>

int main(){
    char a, b, c, d;
    scanf("%c%c%c%c", &a, &b, &c, &d);
    printf("%c %c %c %c", a, b, c, d);
    return 0;
}

1163028233 发表于 2021-12-15 20:02:35

jackz007 发表于 2021-12-15 18:35


大哥,我想问的是我那个代码是如何实现的,那个代码可以运行完成题目要求的功能,我只是不清楚程序的运行机制或者原理,想找个人给我说下

1163028233 发表于 2021-12-15 20:03:11

傻眼貓咪 发表于 2021-12-15 19:14


大哥,我想问的是我那个代码是如何实现的,那个代码可以运行完成题目要求的功能,我只是不清楚程序的运行机制或者原理,想找个人给我说下

jackz007 发表于 2021-12-15 20:19:30

本帖最后由 jackz007 于 2021-12-15 20:25 编辑

1163028233 发表于 2021-12-15 20:02
大哥,我想问的是我那个代码是如何实现的,那个代码可以运行完成题目要求的功能,我只是不清楚程序的运行 ...

    for(i = strlen(str) ; i > 0 ; i --)// 这个 for 语句将循环 4 次,i 的值将依次为 4 , 3 , 2 , 1
    {
            str =str   ;
            str = ' '   ;
    }
    假如 str[] = '1234'
    4 次循环的情况如下:
    : str = str ; '\0'
             str = ' '    ; ' '
    : str = str ; '4'
             str = ' '    ; ' '
    : str = str ; '3'
             str = ' '    ; ' '
    :str = str ; '2'
             str = ' '    ; ' '
             str = '1'    ; '1'
      从下往上,从 str ~ str 把所有的注释串起来看,就知道这 2 句代码在干什么了。
页: [1]
查看完整版本: C语言字符串中插入空格问题