错误发生在以下行中:
printf("\n%s was found at word number(s): %d\n", search_for, pos);
我想打印我的整数数组(pos
),但我不知道该怎么做。我通过命令行运行它,我收到此错误:
search_word.c:57:28: warning: format specifies type 'int' but the argument hastype 'int *' [-Wformat] search_for, pos);
代码:
const int MAX_STRING_LEN = 100;
void Usage(char prog_name[]);
int main(int argc, char* argv[]) {
char search_for[MAX_STRING_LEN];
char current_word[MAX_STRING_LEN];
int scanf_rv;
int loc = 0;
int pos[MAX_STRING_LEN] = {0};
int word_count = 0;
int freq = 0;
/* Check that the user-specified word is on the command line */
if (argc != 2) Usage(argv[0]);
strcpy(search_for, argv[1]);
printf("Enter the text to be searched\n");
scanf_rv = scanf("%s", current_word);
while ( scanf_rv != EOF && strcmp(current_word, search_for) != MAX_STRING_LEN ) {
if (strcmp(current_word, search_for) == 0) {
loc++;
freq++;
pos[loc] = word_count;
}
word_count++;
scanf_rv = scanf("%s", current_word);
}
if (freq == 0)
printf("\n%s was not found in the %d words of input\n",
search_for, word_count);
else
printf("\n%s was found at word number(s): %d\n",
search_for, pos);
printf("The frequency of the word was: %d\n", freq);
return 0;
} /* main */
/* If user-specified word isn't on the command line,
* print a message and quit
*/
void Usage(char prog_name[]) {
fprintf(stderr, "usage: %s <string to search for>\n",
prog_name);
exit(0);
} /* Usage */
答案 0 :(得分:1)
pos
是一个数组。你必须循环打印它。
做
else {
printf("\n%s was found at word number(s): ",
search_for);
for (int index = 0; index < MAX_STRING_LEN; index++)
printf("%d ", pos[index]);
printf("\n");
}
答案 1 :(得分:1)
你需要遍历数组。 C无法在单个语句中打印int
数组:
else {
int i;
printf("\n%s was found at word number(s): ", search_for);
for ( i = 0; i < loc; ++i ) {
if (i > 0)
printf(", ");
printf("%d", pos[i]);
}
printf("\n");
}
在此之前,请务必在合适的时间增加loc
。按原样,你将第一个元素留空。
if (strcmp(current_word, search_for) == 0) {
pos[loc] = word_count;
loc++;
freq++;
}