sscanf写入字符数组 #包括 #包括 #包括 #包括 #包括 #包括 int main() { 字符缓冲区[40000]=“3 Hello World”; int-idvalue; char-buf[4000]; sscanf(缓冲区,“%d%s%s”,&idvalue,buf); printf(“%d->%s\n”,idvalue,buf); 返回0; }

sscanf写入字符数组 #包括 #包括 #包括 #包括 #包括 #包括 int main() { 字符缓冲区[40000]=“3 Hello World”; int-idvalue; char-buf[4000]; sscanf(缓冲区,“%d%s%s”,&idvalue,buf); printf(“%d->%s\n”,idvalue,buf); 返回0; },c,scanf,C,Scanf,在这段代码中,我有一个变量缓冲区,它的类型总是“integer rest of part”。我想将该变量的内容复制到两个新变量idvalue和bufidvalue将包含该整数,buf将包含该部分的其余部分,这些部分可以有空格、整数、字符串等。 立即写入idvalue已正确复制,但在buf的情况下,该值在空格后终止。告诉我一种在单个字符串中复制整个部件其余部分的方法buf尝试使用格式说明符%[^\n]而不是%s 这将告诉sscanf读取并存储任何字符,直到换行符(\n)进入buff: sscanf

在这段代码中,我有一个变量缓冲区,它的类型总是“integer rest of part”。我想将该变量的内容复制到两个新变量
idvalue
buf
idvalue
将包含该整数,
buf
将包含该部分的其余部分,这些部分可以有空格、整数、字符串等。
立即写入
idvalue
已正确复制,但在
buf
的情况下,该值在空格后终止。告诉我一种在单个字符串中复制整个部件其余部分的方法
buf

尝试使用格式说明符
%[^\n]
而不是
%s

这将告诉
sscanf
读取并存储任何字符,直到换行符(
\n
)进入buff:

sscanf(buffer, "%d%[^\n]", &idvalue, buf);

对于其他应用程序,您可以在
[]
中添加字符,例如,如果您想在到达换行符或选项卡时停止阅读:
[^\n\t]

这里有一个替代sscanf行,可以解决您的问题

 sscanf(buffer,"%d %[^\n]",&idvalue,buf);

sscanf
格式字符串中有三个格式说明符,但只有两个指针。