麻烦使用循环将字符添加到c中的“字符串”数组?

时间:2014-02-06 06:49:43

标签: c arrays string char

所以我尝试使用数据类型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

2 个答案:

答案 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]);时,你正在尝试将字符串读入每个不正确的整数位置。这就是即使您输入字符串也只能存储第一个字符的原因。