我有一个文本文件,其中出现两种类型的格式。扫描完第一种格式并将其放入数组后,遇到第二种格式:
$$$$$$$
I have a big tree full of money
如何忽略$$$$$$$行并将句子扫描到一个新数组中,其中每个元素都是句子中的一个单词:
`char sentence[MAX_SENTENCE_LENGTH]`
我试过用:
for (i = 0; i < MAX_SENTENCE_LENGTH; i++){
if (scanf(" $$$$$$$ %s", sentence[i]) !=1){
break;
但这并不能解释$$$$$$$
仅在句子之前出现一次的事实。它还会返回格式警告:
format specifies type 'char *' but the argument has type 'int' [-Wformat]
答案 0 :(得分:1)
您的程序中的主要问题是您希望读取字符串数组,但您的数据结构是单个字符串。您的编译器实际上应该已经警告过您。
然后,使用" $$$$$$$ %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++;
}
}