如何将字符串添加到数组?

时间:2014-12-10 17:48:20

标签: c

如何将字符串添加到这样的数组中?我有一个名为" line"它读取用户的输入,然后将其存储在" var" 。 Var的大小[10] [40]因此它可以存储10个大小为40的字符串(希望这就是它的作用?)。

int main (int argc, char **argv){
    int i=0,n=0;
    char line[40];
    char var[10][40];

    while(n<10){
        gets(line);
        strcpy(var[i],line);
        printf("%s",var[i]);
        i++;
        n++;
    }
}

3 个答案:

答案 0 :(得分:2)

gets()很危险,不应该使用。使用fgets()读取输入并将其存储在数组中。

PS:fgets()附带换行符。在将数据从行复制到数组之前,最好检查fgets()的返回值。

   while(i<10){
    fgets(line,sizeof(line),stdin);
    strcpy(var[i],line);
    printf("%s",var[i]);
    i++;
    }

答案 1 :(得分:0)

首先,使用fgetsgets已被弃用且危险。

同样适用于strcpy,使用strncpy代替,它允许您指定要复制的字符数,这样如果字符串不是,则不会复制垃圾内存NULL终止的。

然后你可以删除n,你不需要它。因此,您几乎可以获得与Gopi相同的代码,但请勿使用strcpy !!!

答案 2 :(得分:0)

您不需要行缓冲区,直接将输入写入var

while( n<10 && fgets(var[n],40,stdin)!=0 ){
    strtok(var[n],"\n"); /* remove trailing newline */
    printf("%s",var[n]);
    n++;
}