分享
三行代码  ›  专栏  ›  技术社区  ›  Sillyon

如何用scanf()读取char指针的句子?

  •  -2
  • Sillyon  · 技术社区  · 8 月前

    我有一个字符指针: char *sentences; 我是这样读的:

    #include <stdio.h>
    
    int main() {
        char *sentences;
        sentences="We test coders. Give us a try?";
        printf("%s", sentences);
        return 0;
    }
    

    但我想和 scanf() C函数

    scanf("%[^\n]s",S); scanf("%s",S); 不起作用。

    我该怎么做?

    1 回复  |  直到 8 月前
        1
  •  1
  •   Govind Parmar    8 月前

    你在声明变量吗 char *sentences; 然后马上给它写信 scanf ?那不管用。

    除非A char * 指针指向现有字符串,或指向分配给 malloc -族函数,用指定给它 斯坎夫 或者类似的是未定义的行为:

    char *sentences;
    scanf("%s", sentences); // sentences is a dangling pointer - UB
    

    因为你还没有真正共享你的代码 斯坎夫 而且不起作用,我只能假设这就是问题所在。

    如果要将用户提供的值赋给字符串,可以将其声明为固定长度的数组,然后使用适当的输入函数读取。 斯坎夫 如果使用正确,可以使用,但是 fgets 更简单:

    char sentence[200];
    fgets(sentence, 200, stdin);
    // (User inputs "We test coders. Give us a try")
    
    printf("%s", sentence);
    // Output: We test coders. Give us a try.
    

    而且,永远不要使用 gets .