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[] ,即二者等价