1

您好,我的 C 程序有一个小问题。

#include<stdio.h>

int main ( int argc, char **argv )
{
    char buff[120];
    char text;

    printf("Enter your name: ");
    gets(buff);
    text = sprintf(buff, "echo StrText=\"%s\" > spk.vbs");
    system(text);
    system("echo set ObjVoice=CreateObject(\"SAPI.SpVoice\") >> spk.vbs");
    system("echo ObjVoice.Speak StrText >> spk.vbs");
    system("start spk.vbs");
    return 0;
}

如何从用户那里获取输入并将其应用到 system() 函数中?我是 C 新手,我主要是批处理编码器,我正在尝试将一些应用程序移植到 C,所以谁能告诉我在不使用系统函数的情况下编写这个应用程序?

提前致谢。

4

2 回答 2

0

将此添加到您的包括:

#include <string.h>

更改char text;char text[120];- 必须是一个数组,而不是单个字符

然后替换getsfgets

fgets(buff, sizeof(buff), stdin); /* for sizeof(buff) to work buff and fgets must be in the same scope */

buff[strlen(buff) - 1] = '\0'; /* this will trim the newline character for you */

最后,在将textsystem格式化为您的目的之后(可能类似于):

sprintf(text, "echo StrText=\"%s\" > spk.vbs", buff);

这是你要找的吗?

注意:您还应该包括#include <stdlib.h>在您的system通话中。总是在编译时出现警告(gcc -Wall -Wextra如果你在 Linux 上),它会为你指出。

这是你需要的吗?

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main ( int argc, char **argv )
{
    char buff[120];
    char text[120];

    printf("Enter your command: ");

    fgets(buff, sizeof(buff), stdin);

    buff[strlen(buff) - 1] = '\0'; /* get rid of the newline characters */

    sprintf(text, "echo StrText=\"%s\" > spk.vbs", buff);

    system(text);

    return 0;
}
于 2013-07-13T08:48:37.347 回答
0

get 已弃用。请改用 fgets。

#include<stdio.h>                                                                                                                                                                                                                    

int main ( int argc, char **argv )
{
    char inputBuf[120];
    char cmdBuf[200];

    printf("Enter your name: ");
    fgets(inputBuf , sizeof( inputBuf) - 1 , stdin );
    sprintf(cmdBuf, "echo StrText=\"%s\" > spk.vbs" , inputBuf );
    system(cmdBuf);
    return 0;
}
于 2013-07-13T08:51:30.160 回答