将scanf值存储到二维字符串数组中

先生

我在使用将字符串存储到2d数组时遇到麻烦scanf

为了说明这一点,这是程序接受的输入:

p2/src/stuff:5:
p3/src/stuff:5:
p4/src/stuff:6:

因此,我希望能够用冒号将字符串和数字分开并分别存储。因此,理想情况下,我的2d数组对于字符串如下所示:

[["p2/src/stuff"], ["p3/src/stuff"], ["p4/src/stuff"]]

数字可以存储在一维数组中。

这是我到目前为止的内容:

    int main() {
        char *str;
        char *i;

        int n = 1;
        while (n == 1) {
                n = scanf("%m[^':']:%m[^':']:", &str, &i);
        }
        printf("# inputs read: %d\n", n);
        printf("%s\n", str);
        printf("%s\n", i);
    }

在这里,它仅打印第一行:

p2/src/stuff
5

我应该有一个使用剂量指针算法的迭代器吗?我对指针算法不熟悉。

用户名

scanf返回扫描的项目数。在这种情况下,它将是2而不是1。这里返回1表示扫描期间出现问题。
%m说明符分配内存的指针。使用一对指针,应该在循环的每次迭代中释放它们。您可以使用一个指针数组来存储每个输入。
scanset不需要单引号[^':']如果要扫描不是冒号的所有字符,则[^:]可以使用。
EOF将终止while循环,因此,如果您正在从文件读取,它将停止在文件末尾。可以使用Ctrl + D(Linux)或Ctrl + Z(Windows)终止从stdin的读取。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
    char *str;
    char *i;
    int n;
    while ( ( n = scanf("%m[^:]:%m[^:]:", &str, &i)) == 2) {
        printf("# inputs read: %d\n", n);
        printf("%s\n", str);
        printf("%s\n", i);
        free ( str);
        free ( i);
    }
    return 0;
}

编辑:
这使用了一个指针数组来收集str和i数组的多个输入。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
    char *str[10];// array of pointers
    char *i[10];

    int each = 0;
    int loop = 0;
    int n = 0;
    while ( ( n = scanf("%m[^:]:%m[^:]:", &str[each], &i[each])) == 2) {
        printf("# inputs read: %d\n", n);
        printf("%s\n", str[each]);
        printf("%s\n", i[each]);
        each++;
        if ( each > 9) {
            break;//too many inputs for array size
        }
    }
    for ( loop = 0; loop < each; loop++) {
        printf ( "str[%d]=%s\n", loop, str[loop]);//print all the str inputs
    }
    for ( loop = 0; loop < each; loop++) {
        printf ( "i[%d]=%s\n", loop, i[loop]);//print all the i inputs
    }
    for ( loop = 0; loop < each; loop++) {//free memory
        free ( str[loop]);
        free ( i[loop]);
    }
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将字符串和字符存储在二维数组中(C)

来自分类Dev

替换二维数组中的字符串值

来自分类Dev

替换二维数组中的字符串值

来自分类Dev

如何将字符串中的值分配给二维数组?

来自分类Dev

在二维字符串数组中存储许多字符串

来自分类Dev

将字符串读取到C中的二维字符串数组中

来自分类Dev

通过将数组名称存储为字符串,尝试在bash中伪造二维多维数组

来自分类Dev

将二维字符串数组转换为二维数组

来自分类Dev

Javascript二维字符串数组更新值

来自分类Dev

如何在二维数组中存储多个字符串?

来自分类Dev

Python中二维列表中存储字符串值的结构

来自分类Dev

C中的二维字符串数组

来自分类Dev

C中的二维字符串数组

来自分类Dev

替换二维数组中的字符串

来自分类Dev

如何从二维数组中检索字符串

来自分类Dev

Java中的二维字符串数组

来自分类Dev

C中的二维字符串数组

来自分类Dev

将字符从二维数组连接并打印到字符串中

来自分类Dev

一维字符串数组与C中的二维字符串数组的比较

来自分类Dev

将每个单词存储在二维字符串C中

来自分类Dev

我可以将字符串从二维数组复制到一维数组吗 (Array&Pointers)

来自分类Dev

c - 如何使用scanf()和while循环将stdin中的字符串读取到c编程中的二维数组中?

来自分类Dev

Java在字符串的二维数组中查找最小值

来自分类Dev

如何替换二维字符串数组中的值

来自分类Dev

将二维数组解析为python中的字符串

来自分类Dev

将文件中的单词读入二维字符串数组

来自分类Dev

将字符串附加到二维数组 Java 中

来自分类Dev

卡在二维数组上,将指针插入文件中的字符串

来自分类Dev

Python:将二维数组中的特定元素从字符串永久转换为整数

Related 相关文章

  1. 1

    将字符串和字符存储在二维数组中(C)

  2. 2

    替换二维数组中的字符串值

  3. 3

    替换二维数组中的字符串值

  4. 4

    如何将字符串中的值分配给二维数组?

  5. 5

    在二维字符串数组中存储许多字符串

  6. 6

    将字符串读取到C中的二维字符串数组中

  7. 7

    通过将数组名称存储为字符串,尝试在bash中伪造二维多维数组

  8. 8

    将二维字符串数组转换为二维数组

  9. 9

    Javascript二维字符串数组更新值

  10. 10

    如何在二维数组中存储多个字符串?

  11. 11

    Python中二维列表中存储字符串值的结构

  12. 12

    C中的二维字符串数组

  13. 13

    C中的二维字符串数组

  14. 14

    替换二维数组中的字符串

  15. 15

    如何从二维数组中检索字符串

  16. 16

    Java中的二维字符串数组

  17. 17

    C中的二维字符串数组

  18. 18

    将字符从二维数组连接并打印到字符串中

  19. 19

    一维字符串数组与C中的二维字符串数组的比较

  20. 20

    将每个单词存储在二维字符串C中

  21. 21

    我可以将字符串从二维数组复制到一维数组吗 (Array&Pointers)

  22. 22

    c - 如何使用scanf()和while循环将stdin中的字符串读取到c编程中的二维数组中?

  23. 23

    Java在字符串的二维数组中查找最小值

  24. 24

    如何替换二维字符串数组中的值

  25. 25

    将二维数组解析为python中的字符串

  26. 26

    将文件中的单词读入二维字符串数组

  27. 27

    将字符串附加到二维数组 Java 中

  28. 28

    卡在二维数组上,将指针插入文件中的字符串

  29. 29

    Python:将二维数组中的特定元素从字符串永久转换为整数

热门标签

归档