这是yjy的习题库,中途我在使用fgest时颇费了一点心思,特此记录一下。
#include <stdio.h> #include <string.h> #include <stdlib.h> int main (void) { char (*arry)[6]; int n,tmp,i,j; char *find; scanf("%d",&n); getchar();/* sancf 输入的时候会有换行符输入,该函数是为了吃掉 ,因为fegets遇到 就结束*/ arry=(char (*)[6])malloc(n*sizeof(char)*6); for(i=0;i<n;i++) { /* fgets 读到count-1个字符或者遇到 就终止,所以这里选择6 * 6-1=5 由于只会输入4个有用字符(例如为abcd),最后会有 ,此时字符数组中有 * 我输入的4个字符a b c d + 有 是因为fgets要吸收输入时的 ,且fgets会 * 自动在最后加上 。 * NOTE:使用fegts,输入第二个参数时,建议为输入的有效字符+2,例如我这里要输入4个 * 有效字符,为了容错 和 */ if(fgets(arry[i],6,stdin)==NULL) { return -1; } if((find=strchr(arry[i],' '))!=NULL) { *find='