我正在尝试制作一个程序,每次程序循环时扫描多个字符,然后在最后打印所有扫描的字符。但是,程序仅打印每个循环中扫描的第一个字符。有没有人有任何建议如何解决这个问题?另外,我只是一个初学者。
#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]);
}
答案 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]);
}