从用户输入读取句子的功能

时间:2015-06-28 14:15:12

标签: c

我试图用我的函数读取用户输入问题的句子,当我尝试调用它时跳过第二次尝试。任何解决方案?

void readString(char *array, char * prompt, int size) {
    printf("%s", prompt);
    char c; int count=0;
    char * send = array;
    while ((c = getchar()) != '\n') {
        send[count] = c; count++;
        if (size < count){ free(array); break; } //lets u reserve the last index for '\0'
        }

    }

以下是尝试调用它的方法:

char obligation[1500];
char dodatno[1500];

readString(obligation, "Enter obligation", 1500);
readString(dodatno, "Enter hours", 1500);

以下是输入示例: “这是一句话”

所以后来我做了这个:

printf(" %s | %s \n",obligation, dodatno);

并获得:

  

这是一句话|这是另一句话

2 个答案:

答案 0 :(得分:4)

readString()函数

  1. array未由malloc()或系列动态分配内存。

    使用未分配内存的指针调用free()会动态创建未定义的行为。

  2. getchar()返回int。您应该将c的类型更改为int c

  3. 此外,readString()中的输入没有空终止,因此您无法直接将数组用作 string 。您需要自己对数组进行空终止,将其用作读缓冲区,以便稍后用作字符串。

答案 1 :(得分:3)

你去:)

void readString(char *array, char * prompt, int size) {
    printf("%s", prompt);
    int c; int count=0;
    while((c = getchar()) != '\n' && c != EOF);
    while ((c = getchar()) != '\n') {
        array[count] = c; count++;
        if (count == (size - 1)) { break; }
    }
    array[count] = '\0';
}