#include <stdio.h> #define LEN 100 void Copy(char a[], char b[], int n, int m); int main(void) { char a[LEN], b[LEN]; int n, m; scanf("%d", &n); getchar(); fgets(a, n + 1, stdin); //n+1就是读取输入的n个字符,后接一个'\0' scanf("%d", &m); Copy(a, b, n, m); printf("%s\n", b); return 0; } void Copy(char a[], char b[], int n, int m) { int i, j = 0; for (i = m - 1; i <= n; i++) //i<=n 因为也要把结束符给拷贝进去 b[j++] = a[i]; }
0.0分
11 人评分
#include<stdio.h> #include<math.h> void a(int n,char x[],char k[],int m) { int i,j=0; for(i=m-1;i<n;i++) { k[j++]=x[i]; } } void a(int n,char x[],char k[],int m); int main(void) { int n,i; char x[100]; char k[100]; int m; scanf("%d",&n); scanf("%s",&x); scanf("%d",&m); a(n,x,k,m); for(i=0;i<=m;i++) { printf("%c",k[i]); } printf("\n"); return 0; } 求求了,这哪里错了
#include<stdio.h> int main() { int n,m; scanf("%d",&n); char a[n]; gets(a); scanf("%d",&m); char b[n-m]; for(int i=m-1,j=0;i<n;i++,j++) { b[j]=a[i]; } puts(b); return 0; } 我这斯哪里错了……
fgets()跟gets()一样,但是优于gets()因为fets()是给了存储空间大小,这样可以防止内存溢出。fgets()遇到'\n'会停止输入,因为scanf最后会缓存一个回车,必须清除这个缓存(清除缓存可以在scanf后面加fflush(stdin);),或者用getchar()去接收这个回车,不然的话,fgets()不能输入字符
那个scanf("%d",&n); 这个最后会有一个enter键 是用getchar去接受这个enter键吗
MarkandLcg 2020-02-28 19:42:32 |
是的
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:530 |
A+B for Input-Output Practice (VI) (C++代码)浏览:445 |
不容易系列2 (C语言代码)浏览:641 |
简单的a+b (C语言代码)浏览:564 |
幸运数 (C++代码)浏览:1309 |
1017题解浏览:663 |
1048题解(读入回车问题)浏览:628 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:644 |
格式化数据输出 (C语言代码)浏览:882 |
陶陶摘苹果2 (C语言代码)浏览:650 |