繁体   English   中英

将字符串拆分为不同的变量

[英]Split string into different variables

大家好! 我是C语言的新手,所以我想在一个问题上寻求帮助。 我必须分离一个字符串并将其放入不同的变量中。 想象一下, Sol 3 5会导致类似:

var1=Sol  
var2=3  
var3=5 

我尝试使用scanf,但是它在第一个空格中停了下来:/。
提前致谢!
干杯!

编辑:这不是我的功课,我只是在练习,但是我现在真的很想知道如何做到这一点:)。 我现在拥有的代码是这样的:

int main () {  
    char var1[10],var2[10],var3[10],func;  
    fgets(func, 20, stdin);   
    fscanf(func,"%s %d %d", var1,var2,var3);  
    printf("%s %d %d", var1,var2,var3);  
    return 0;  
}

strtok是您需要的功能:

 #include <string.h>

 char* str = "Sol 3 5";
 char* ptr;
 char* saved;
 ptr = strtok_r(str, " ", &saved);
 while (ptr != NULL)
 {
   printf("%s\n", ptr);
   p = strtok_r(NULL, " ", &saved);
 }

请注意:此函数修改了原始字符串,将字符串标记的结尾(null, \\0 )代替了定界符。

好的scanf还是不错的,但是如果您不清楚家庭作业的意思,我不会帮您的。

编辑和代码发布后

您的问题是您对编译器撒谎。 不要那样做 它不喜欢它:)

您要求编译器读取一个字符串和2个整数...但是然后告诉编译器将结果放入char数组中(仅对第一次转换正确)

             /* char[] but %d wants pointer to int */
    fscanf(func,"%s %d %d", var1,var2,var3);
                         /* all var1, var2, and var3 are arrays of char! */

尝试将变量声明为

    char var1[10];
    int var2,var3;

哦! func被声明为纯字符。 您可能还需要其他东西。

像这样声明变量后,您需要更改scanf调用,以传递int的地址,而不是其(未初始化的)值。

有一个类似于scanf的函数,称为sscanf 它的工作原理相同,但是它从字符串而不是文件中读取值:

sscanf("Sol 3 5", "%s%d%d", v1, &v2, &v3);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM