C:扫描多个字符并在一行中输出所有字符

时间:2015-02-17 08:16:38

标签: c

我正在尝试制作一个程序,每次程序循环时扫描多个字符,然后在最后打印所有扫描的字符。但是,程序仅打印每个循环中扫描的第一个字符。有没有人有任何建议如何解决这个问题?另外,我只是一个初学者。

#include <stdio.h>

void f1();
void f2();
int i;
char letters[20];

int main()
{
	f1();
	printf("%s", letters);
}

void f1()
{
	for(i=0; i<5; i++)
	{
		f2();
	}
}

void f2()
{
	printf("Enter any 2 letters: ");
	scanf("%s", &letters[i]);
}

2 个答案:

答案 0 :(得分:1)

假设您一次只输入两个字符:

替换

void f2()
{
    printf("Enter any 2 letters: ");
    scanf("%s", &letters[i]);
}

使用

void f2()
    {
        printf("Enter any 2 letters: ");
        scanf("%s", &letters[2*i]);
    }

答案 1 :(得分:0)

问题是在每个循环中只扫描一个字符,因此当您打印数组时,每个字符都是输入的第一个字符。

scanf("%s", &letters[i]);

您需要使用像

这样的2D数组
char letters[5][20];

要扫描5个字符串,每个字符串20个字符,整个代码看起来像

#include <stdio.h>

void f1();
void f2();
int i;
char letters[5][20];

int main()
{
    f1();
    int k;
    for(k=0;k<5;k++)
    printf("%s\n", letters[k]);
    return 0;
}

void f1()
{
    for(i=0; i<5; i++)
    {
        f2();
    }
}

void f2()
{
    printf("Enter any 2 letters: ");
    scanf("%s", &letters[i]);
}