C语言 - 为用户输入添加引号

4

我想在用户输入的内容中添加引号,但是不知道如何操作。

printf("Please enter a name: ");
    char string[50];

    scanf ("%[^\n]%*c", string);

接下来,我希望能够添加引号。因此,如果用户输入的是Bob,则存储为"Bob"。谢谢。

2个回答

5
然后,写下:
string[0] = '"';
scanf ("%[^\n]%*c", string + 1);
size_t len = strlen(string);
string[len] = '"';
string[len + 1] = '\0';

'"'存储在string[0]位置后,在string + 1上调用scanf()。然后获取该字符串的长度,并在其末尾添加另一个'"'


1
刚刚正在打这个完全相同的答案,不过最好检查scanf的返回值,以确保已输入某些内容。 - Chris Turner
1
@ChrisTurner 检查 scanf() 的返回值是好的建议,但正如您所看到的,OP没有提供完整的工作代码,因此我只是提供了解决问题的方法。 - machine_1

1

你可以做到这一点

if(fgets(string,50,stdin)!=NULL){
   char anotherstring[50];
   string[strcspn(string,"\n")]=0;
   int len = (int) strlen(string);
   if(sprintf(anotherstring,"\"%s\"", string) == len+2){
      // anotherstring contains quoted string
   }
}

在这里,你本可以使用scanf——但你需要检查scanf的返回值来确定它是否成功。更好的方法是使用fgets——它比scanf更容易使用。
此外,如果你使用scanf,你应该指定可以读取的字符数。
if(scanf("%49s",string) == 1){
   ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接