c - 如何将句子扫描到字符串数组中?

标签 c arrays string char

我有一个文本文件,其中出现两种类型的格式。扫描完第一种格式类型并将其放入数组后,遇到第二种格式:
$$$$$$$
我有一棵装满钱的大树

如何忽略 $$$$$$$ 行并将句子扫描到一个新数组中,其中每个元素都是句子中的一个单词:

`char sentence[MAX_SENTENCE_LENGTH]`

我尝试过使用:

for (i = 0; i < MAX_SENTENCE_LENGTH; i++){
        if (scanf(" $$$$$$$ %s", sentence[i]) !=1){
                break;

但这并没有考虑到 $$$$$$$ 在句子之前只出现一次的事实。它还返回格式警告:
格式指定类型“char *”,但参数类型为“int”[-Wformat]

最佳答案

程序中的主要问题是您希望读取字符串数组,但您的数据结构是单个字符串。你的编译器实际上应该警告你。 然后,扫描 "$$$$$$$ %s" 格式的第一个元素,以下仅使用 "%s" 格式:

const int MAX_SENTENCE_LENGTH = 30;
const int MAX_NR_OF_SENTENCES = 30;

char sentence[MAX_NR_OF_SENTENCES][MAX_SENTENCE_LENGTH];

int i=0;
if (scanf(" $$$$$$$ %29s", sentence[i]) == 1) {
    i++;
    while (i < MAX_NR_OF_SENTENCES) {
        if (scanf("%29s", sentence[i]) !=1){
            break;
        }
        i++;
    }
}

关于c - 如何将句子扫描到字符串数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43972617/

相关文章:

java - 使用字符串标记器解析字符串两次

java - 如何使用java反转数组中的字符元素?

c - Excel VBA 不能很好地与 C dll 一起用于小数 - 与整数一起工作

c - for循环中指针作为索引值

c - 动态分配的整数数组的大小

C++ 只在 char* 中存储 double 的特定字节

java - 在 JOptionPane 中显示(字符串)数组的内容

c - 如何使用 R CMD SHLIB 编译 C 代码以使用 OpenMP?

java - 给定一个数字数组,任务是仅打印那些只有 1、2 和 3 作为数字的数字

javascript - 队列有问题