我有一个聊天机器人程序,该程序使用名为userInput()
的功能来获取用户的输入。
我必须为我的项目测试程序,但是我不知道如何在测试程序的功能中输入文本。我尝试过的所有操作都停止了自动测试,等待用户键入内容。
在不停止测试程序的情况下提供帮助用户添加测试短语的任何帮助。
char *userInput()
{
char *str = NULL;
int ch;
size_t size = 0, len = 0;
while ((ch=getchar()) != EOF && ch != '\n') {
if (len + 1 >= size)
{
size = size * 2 + 1;
str = realloc(str, sizeof(char)*size);
}
str[len++] = ch;
}
if (str != NULL) {
str[len] = '\0';
}
return str;
}
答案 0 :(得分:0)
我支持anonmess的想法,即您可以使用输入文件从用户输入文本。我在输入文件中使用了以下几行:
testing input
testing input 2
输入文件名是通过命令行指定的。您可以根据需要对文件名进行硬编码。
#include <stdio.h>
#include <string.h>
int processInputFile(char *filename)
{
FILE *ifp;
char buffer[1024];
char *p;
if ((ifp = fopen(filename, "r")) == NULL)
{
fprintf(stderr, "Failed to open \"%s \" in processInputFile.\n", filename);
return -1;
}
while ((fgets(buffer, sizeof(buffer), ifp)) != NULL)
{
// remove newline character
p = strchr(buffer, '\n');
if (p != NULL)
*p = '\0';
// We can also remove the newline character by getting
// its length and chomping the last character
// int length = strlen(buffer);
// buffer[length - 1] = '\0';
printf("%s\n", buffer);
}
fclose(ifp);
}
int main(int argc, char **argv)
{
if (argc < 2)
{
printf("Proper syntax: ./a.out <n>\n");
return -1;
}
processInputFile(argv[1]);
return 0;
}
读取文件并打印行。您可以在while循环中将字符串传递给另一个函数。