我想输入:
abc def ghi jkl
,输出应为:
abc
def
ghi
jkl
我想将每个字符串存储在一个数组中,然后使用for循环来打印每个位置。
我有这段代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char vector[100];
int i = 0;
int aux = 0;
while (i < 5)
{
scanf("%s", &vector[i]);
i++;
aux+= 1;
}
for (i=0;i<aux;i++)
{
printf("%s\n", &vector[i]);
}
return 0;
}
我做错了什么?
第二个问题:
当我按 ctrl D 并打印输出时,如何更改代码以停止读取输入?
答案 0 :(得分:2)
你在“向量”中取一个字符的地址,而不是填充几个字符串。这些修改:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char vector[5][100]; /* five times 100 characters, not just 100 characters */
int i = 0;
int aux = 0;
while (i < 5)
{
scanf("%s", vector[i]); /* notice the & is gone */
i++;
aux+= 1;
}
for (i=0;i<aux;i++)
{
printf("%s\n", vector[i]); /* notice the & is gone */
}
return 0;
}
至于ctrl-D位,你可以让它在输入结束时停止读取,但是你必须管理大量的输入(所以你可能需要动态分配你所在的缓冲区)解析“你的字符串scanf
)
答案 1 :(得分:0)
您正在使用单个char数组来存储多个字符串。您可以这样使用二维数组:
char vector[STRING_NUM][STRING_MAX_LENGTH]
答案 2 :(得分:0)
你有一个字符数组(即一个字符串)。
如果你想要一个字符串数组,那就是一个字符数组数组:
char vector[NUM_STRINGS][NUM_CHARS];