所以,我必须在'c'中使用这个战舰游戏,我有一个功能,当被叫时要求输入一个板的大小,2行数字(这对他们现在所做的并不重要)和代表战舰委员会的委员会。所以输入看起来像这样:
C
10 10
3 1 3 1 2 2 3 1 1 3
2 2 0 2 2 2 2 3 4 1
..........
..........
..........
..........
...〜......
< .........
...〜... ^。〜
..........
..........
..........
重要部分
我需要帮助,因为我不能单独使用数字或字符存储在单独的变量中。我尝试使用scanf()但由于空格不起作用。我怎么能这样做? (我正在寻找最简单的方法)
这与我所拥有的一致:
void c(){
int a, c;
scanf("%d %d", &alt, &comp);
/*alt and comp are external. these will hold the first two numbers */
for(a=0; a< alt; a++){
scanf("%d", &s[0][a]);
}
for(c=0; c < comp; c++){
scanf("%d", &s[1][c]);
} /* these two fors are supposed to get the first two rows of numbers to an external array */
for(a=0; a < alt, a++){
for(c=0; c < comp; c++){
scanf("%c", &tab[a][c]);
}
}/* this is supposed to get the board to 'tab' (external) */
}
答案 0 :(得分:0)
您可以尝试在scanf中添加一个空格,如下所示:scanf("%d ", &s[1][c]);
以消耗空格,但是您需要特殊情况下该行的最后一个数字,因为它不会有尾随空格。< / p>
相反,我会阅读整行数字并使用strtok分割空格上的行。
#include <string.h>
#include <stdio.h>
char[100] line;
char *number;
int i;
i = 0;
gets(line);
number = strtok (line, " ");
while(number != NULL;) {
s[0][i] = atoi(number);
number = strtok(NULL, " ");
i += 1;
}
i = 0;
gets(line);
number = strtok (line, " ");
while(number != NULL;) {
s[1][i] = atoi(number);
number = strtok(NULL, " ");
i += 1;
}