扫描和打印字符串

时间:2016-10-27 19:42:11

标签: c string multidimensional-array

第一个代码扫描三个字符串,然后再次打印出字符串。第一个代码工作正常并打印出字符串,如第一个图像链接中所示。

在第二个代码中,字符串的数量必须是可变的。因此,我扫描整数k,并将此整数放在for循环中。我希望当我扫描2时,这会有相同的结果,但它没有相同的效果。相反,它只扫描2个字符串,并在打印出字符串之前打印出一些符号,如第二个图像链接中所示。有没有人对此有解释?

enter image description here

CC:=gcc
EXE:=battle
CFLAGS:=-Wall
OBJS:=quest.o thorgrim.o

%.o: %.c
     $(CC) $(CFLAGS) -MD -MP $< -c -o $@

$(EXE): $(OBJS)
    $(CC) $^ -o $@

clean:
    rm -f $(OBJS) $(EXE)

-include $(OBJS:.o=.d)

第二段代码:

#include <stdio.h>
#include <stdlib.h>
#define maxstring 100
#define maxc 10

int main()
{
char c, text[maxc][maxstring];
int i, j, n, k;

for(j=0; j<=2; j++)
{
    for(i=0; (c=getchar())!='\n'; i++)
    {
        text[j][i]=c;
    }
}
n=i;
    for(j=0; j<=2; j++)
{
    for(i=0; i<n; i++)
    {
        putchar(text[j][i]);
    }


}

   return 0;
}

enter image description here

2 个答案:

答案 0 :(得分:1)

第二个程序从输入k作为第一个字符串的开头读取换行符,将其解释为空字符串。因为您没有初始化text,并且假设所有字符串都是相同的长度,所以会打印垃圾。

此外,您的循环将读入k + 1个字符串;不确定这是不是你想要的。

答案 1 :(得分:-1)

好吧,我得到第一个代码查看第一个字符串的长度(就像第二个代码),并告知其他字符串具有相同的长度。但是,当我扫描第二个代码中的字符串数量(k)时,为什么会得到不同的结果呢?我希望k只能阻止代码扫描的字符串数量。