我需要一个方法来获取每个输入字符并将它们放入一个2D数组(在本例中为char
数组)。
但是,由于我需要从文件输入,有几个行结束(\n
),我不希望这些被插入到数组中,所以我试图使一个条件,如果字符是一个换行符,它不应该被放置在数组中,但它似乎不工作。
为了说明,我尝试自己制作这个方法,因为我没有在网上找到一个,fgets
是我找到的最好的方法。
我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char words[4][4][2];
char verif[2];
int i, j, l = 0, lin = 4, col = lin;
printf("Insert numbers: ");
for (i = 0; i < lin; i++)
{
for (j = 0; j < col; j++)
{
fgets(verif, 2, stdin);
//since I was using the IDE to write I also put a condition not to add the enter for the input but it doesn't work too lol
if (strcmp(verif, "\n\0") != 0 || strcmp(verif, "\r\0") != 0)
{
printf("copying...\n");
printf("%s\n", verif);
strcpy(words[i][j], verif);
l++;
}
else
j--;
}
}
printf("\n");
for (i = 0; i < lin; i++)
{
for (j = 0; j < col; j++)
{
printf("-%s\t", words[i][j]);
}
printf("\n");
}
return 0;
}
字符串
我将使用的输入放在矩阵中:
1234
1234
1234
1234
型
对于像1234123412341234
这样的普通输入,输出(printf矩阵)是可以的:
-1 -2 -3 -4
-1 -2 -3 -4
-1 -2 -3 -4
-1 -2 -3 -4
型
2条答案
按热度按时间0h4hbjxa1#
1.我建议使用函数。
strcmp
比较整个字符串-你需要阅读一些关于它们的内容。1.要比较1
char
,您不需要使用字符串函数。1.您可以通过空字符终止数组来“手动”构造字符串
字符串
https://godbolt.org/z/WsMqdedra
tv6aics12#
fgets(verif, 2, stdin)
是从标准输入读取单个字节的扭曲方式。您可以只写int ch = getchar();
并直接处理字节值,而不是使用字符串比较。然而,主要问题在于测试
if (strcmp(verif, "\n\0") != 0 || strcmp(verif, "\r\0") != 0)
:你应该使用&&
而不是||
,因为你想处理既不是换行符也不是回车符的输入,这将转换为(nota newline)和(nota carriage return)。下面是一个简单的版本:
字符串