首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

strncpy不好理解。该如何处理

2012-05-23 
strncpy不好理解。。C/C++ code#includestdio.h#includestring.h#define MAY 5#define SEN 7#define THE

strncpy不好理解。。

C/C++ code
#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;}

输出时,系统错误。。为什么啊?

[解决办法]
C/C++ code
#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';

热点排行