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: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)) ;
}
} #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;
} jackz007 发表于 2021-12-15 18:35
大哥,我想问的是我那个代码是如何实现的,那个代码可以运行完成题目要求的功能,我只是不清楚程序的运行机制或者原理,想找个人给我说下 傻眼貓咪 发表于 2021-12-15 19:14
大哥,我想问的是我那个代码是如何实现的,那个代码可以运行完成题目要求的功能,我只是不清楚程序的运行机制或者原理,想找个人给我说下
本帖最后由 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]