在c编程中扫描100x100数字的字符串

时间:2015-09-12 08:12:45

标签: c scanf

我一直在搜索所有google或stackoverflow,但找不到它。 :(

我有100个字符串,每个字符串是一个长度= 100的数字,字符串由break_line分隔。 输入示例:

010011001100..... (100 numbers)
...(98 strings)
0011010101010.... (100 numbers)

对于字符串中的每个单个数字,输出应为数组A [100] [100]。

我的代码不起作用,请你帮忙解决一下:

#include <stdio.h>

char a[100][100];
int b[100][100];
int i,j;


int main(void)
{

    for(i = 0; i < 100; i ++){
        for(j = 0; j < 100; j ++){
            scanf ("%s", a[i][j]);
            b[i][j] = a[i][j] - '0';
            printf("%d", b[i][j]);
        }
        printf("\n");
    }
}

非常感谢你。 !

2 个答案:

答案 0 :(得分:3)

您的代码有两个问题:

#include <stdio.h>

char a[100][100]; /* No space for the NUL-terminator */
int b[100][100];
int i,j;


int main(void)
{

    for(i = 0; i < 100; i ++){
        for(j = 0; j < 100; j ++){
            scanf ("%s", a[i][j]); /* %s expects a char*, not a char */
            b[i][j] = a[i][j] - '0';
            printf("%d", b[i][j]);
        }
        printf("\n");
    }
}

应该是

#include <stdio.h>

char a[100][101]; /* Note the 101 instead of 100 */
int b[100][100];
int i,j;


int main(void)
{

    for(i = 0; i < 100; i ++){
        scanf ("%s", a[i]); /* Scan a string */
        for(j = 0; j < 100; j++){
            b[i][j] = a[i][j] - '0';
            printf("%d", b[i][j]);
        }
        printf("\n");
    }
}

#include <stdio.h>

char a[100][100]; /* No need for space for the NUL-terminator as %s isn't used */
int b[100][100];
int i,j;


int main(void)
{

    for(i = 0; i < 100; i ++){
        for(j = 0; j < 100; j ++){
            scanf (" %c", &a[i][j]); /* Scan one character, space before %c ignores whitespace characters like '\n' */
            b[i][j] = a[i][j] - '0';
            printf("%d", b[i][j]);
        }
        printf("\n");
    }
}

答案 1 :(得分:2)

我从Mr.M先生那里得到the answer for my problemBLUEPIXY

scanf("%1d", &b[i][j]);