【发布时间】:2015-07-20 23:07:36
【问题描述】:
我想制作一个程序,以下列方式处理二维数组中的字符串:
每一行仅代表一个名称,而列包含每个名称的单独字符。
像这样:
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) 函数读取字符串时,即使我使用了一维数组,它也应该作为指向二维数组的指针并存储每个字符串,如上所示,对吧?
下面的代码应该要求输入三个名字然后全部打印出来,但是它只打印了姓氏和一些乱码,我做错了什么?
#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';
}
输出显示如下:
【问题讨论】:
-
注意编译器警告。他们会告诉你问题出在哪里。
标签: c arrays string pointers multidimensional-array