C语言回顾(1)输入、输出字符串

1、输入字符串,按回车结束输入,然后输出该字符串

  • 利用scanf()
  • #include <stdio.h>
    #define MAX 100
    
    main()
    {
    	char str[MAX];
    	scanf("%s", str);
    	printf("%s", str);
    	system("pause");
    }
  • 利用指针
  • #include <stdio.h>
    #define MAX 100
    
    main()
    {
    	char array[MAX], *c;
    	c = array;
    	while ((*c++ = getchar()) != '\n');
    	*c = '\0';  //这个结束符不能少,少了就不能输出字符串
    	printf("%s",array);
    	system("pause");
    	return(0);
    }

       

2、输入字符串,按回车结束输入,然后倒序输出该字符串

  • 利用指针传参
  • #include <stdio.h>
    #define MAX 100
    char reverse(char* ,int);
    int get_len(char *array);
    main()
    {
    	char array[MAX], *c;
    	int len;
    	c = array;
    	while ((*c++ = getchar()) != '\n');
    	*--c = '\0';  //--c是为了将回车符替换成结束符,结束符不能少,少了就不能输出字符串
    	len = get_len(array);//获取字符串长度
    	reverse(c,len); //传入指针c,逆序输出
    	system("pause");
    	return(0);
    }
    
    char reverse(char *str,int len){
    	while (len--> 0)
    		putchar(*--str);//从字符串末尾开始输出,向前推进
    	return '\0';
    }
    
    int get_len(char *array)
    {
    	int n = 0;
    	while (*array++ != '\0')
    		n++;
    	return n;
    }
  •  利用字符数组名传参
  • #include <stdio.h>
    #define MAX 100
    char reverse(char*, int);
    int get_len(char *array);
    main()
    {
    	char array[MAX];
    	scanf("%s", array);
    	reverse(array,get_len(array)); //传入字符数组,和字符串长度
    	system("pause");
    	return(0);
    }
    
    char reverse(char *str, int len){
    	str += len; //将指针置于数组末端
    	while (len--> 0)
    		putchar(*(--str));//从字符串末尾开始输出,向前推进
    	return '\0';
    }
    
    int get_len(char *array)
    {
    	int n = 0;
    	while (*array++ != '\0')
    		n++;
    	return n;
    }

    reverse()方法的其他实现

  • char reverse(char *str, int len){
    	while (len-- > 0)
    		putchar(str[len]);//直接从数组末端输出
    	return '\0';
    }

    而且:reverse(char *str, int len) 中, 可将 char *str 替换为 char str[]  ,即二者等价

猜你喜欢

转载自blog.csdn.net/dieju8330/article/details/81780242