strncpy不好理解。。
#include<stdio.h>#include<string.h>#define MAY 5#define SEN 7#define THEMAX 40int main(void){ char s1[MAY][SEN]; char s2[THEMAX]; int i=0; printf("Enter %d words.\n",MAY); while(i<MAY&&gets(s2)) //输入一位数组,复制给二位数组。可以交换么?就是输入二维数组,复制给一位数组? { strncpy(s1[i],s2,SEN-1); s1[MAY][SEN-1]='\0'; i++; } puts("COPY:"); for(i=0;i<MAY;i++) puts(s1[i]); return 0;}
#include<stdio.h>#include<string.h>#define MAY 5#define SEN 7#define THEMAX 40int main(void){ char s1[MAY][SEN]; char s2[THEMAX]; int i=0; printf("Enter %d words.\n",MAY); while(i<MAY&&gets(s2)) //输入一位数组,复制给二位数组。可以交换么?就是输入二维数组,复制给一位数组? { strncpy(s1[i],s2,SEN-1); s1[i][SEN-1]='\0'; //MAY -> i i++; } puts("COPY:"); for(i=0;i<MAY;i++) puts(s1[i]); return 0;}
[解决办法]
s1[MAY][SEN-1]='\0';
这儿的MAY要改成i,即
s1[i][SEN -1] = '\0';