所以我尝试使用数据类型char和数据类型int。不知道printf只显示输入单词的第一个字母。例如,如果有人输入狗,它只会说'd'。 我的猜测可能是单词[i]的语法只接受第一个字母,但我不知道如何解决这个问题。 有谁知道如何解决这个问题?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define pause system("pause")
#define cls system("cls")
void getUserWords(int *counter, int words[]){
int i;
printf("How many words would you like to enter into the cross word puzzle\n");
scanf("%i",&*counter);
for(i=0; i < *counter; i++){
printf("Please enter word #%i\n",i+1);
scanf("%s",&words[i]);
printf("The word %c will be added to the crossword puzzle\n",words[i]);
pause;
cls;
}//end for
printf("Your all your words have been successfully added to the crossword puzzle");
cls;
}//end getUserWords
答案 0 :(得分:2)
如果您阅读了与printf()和朋友有关的C库文档, 你会记得“%c”是单个字符的格式字符串。如果 如果要将字符串打印到终止NULL,则应使用“%s”。
你有:
printf("The word %c will be added to the crossword puzzle\n",words[i]);
但你应该
printf("The word %s will be added to the crossword puzzle\n",words[i]);
此外,请确保您的第二个arg功能分配了足够的空间来存储counter
字。
答案 1 :(得分:1)
int words[]
个单词是一个整数数组,只能包含指定大小的整数。
现在当你使用scanf("%s",&words[i]);
时,你正在尝试将字符串读入每个不正确的整数位置。这就是即使您输入字符串也只能存储第一个字符的原因。