繁体   English   中英

使用2d数组在C中存储字符串

[英]Using 2d arrays to store strings in C

我想以下列方式创建一个处理2d数组中字符串的程序:

每行仅代表一个名称,而列包含每个名称的单独字符。

像这样:

  0 1 2 3 4 5 
0 K e v i n \0
1 J o h n \0
2 L u c y \0

现在,我理解数组的方式是它们作为第一个元素的指针。 因此,当我使用readstring(name)函数读取字符串时,即使我使用了1D数组,它应该作为指向2D数组的指针并存储每个字符串,如上所示,对吧?

以下代码应该要求三个名称然后打印所有,但它只打印姓氏和一些乱码,我做错了什么?

#include <stdio.h>
#include <stdlib.h>

void readstring(char name[]);
void get_data(char name[][15]);
void show_data(char name[][15]);

int main()
{
    char name[3][15];

    get_data(name);
    show_data(name);

    return 0;
}

void get_data(char name[][15]){
        int i=0;
        for(i=0;i<3;i++){
            printf("\nEnter name: ");
            readstring(name);
        }
}

void show_data(char name[][15]){
    int i;
    for(i=0;i<3;i++){
        printf("%s",name[i]);
    }

}

void readstring(char str[]){
    int i=0;
    while((str[i++]=getchar())!='\n' && i<15);
    str[i]='\0';

}

输出显示如下:

http://i58.tinypic.com/e7i048.jpg

问题出在这里:

readstring(name);

将其更改为:

readstring(name[i]);

问题是name是一个二维数组,或一个字符串数组。 因此,要访问字符串数组中的一个字符串,您需要为该特定字符串使用索引。

实际上,调用函数readstring()需要一个字符串作为参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM