Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays sscanf重复字符后的值_Arrays_C_String_Scanf - Fatal编程技术网

Arrays sscanf重复字符后的值

Arrays sscanf重复字符后的值,arrays,c,string,scanf,Arrays,C,String,Scanf,嗨,我正试图从可能有空数据的字符串中解析数据。字符串的分隔符是逗号(,) 例如:123123,你好,,,456是一个字符串。我必须使用sscanf将字符串的每个数据解析为一个单独的变量,然后根据我的代码,我将丢失字符串中的值456: char arr[100]={"123,123,hello,,,456"}; int var1,var2,value; char hello[10]={0},empty_1[10]={0},empty_2[10]={0}; sscanf(arr

嗨,我正试图从可能有空数据的字符串中解析数据。字符串的分隔符是逗号(,)

例如:123123,你好,,,456是一个字符串。我必须使用sscanf将字符串的每个数据解析为一个单独的变量,然后根据我的代码,我将丢失字符串中的值456:

char arr[100]={"123,123,hello,,,456"};
int var1,var2,value;
char hello[10]={0},empty_1[10]={0},empty_2[10]={0};

sscanf(arr,"%d,%d,%[^,],%[^,],%[^,],%d",&var1,&var2,hello,empty_1,empty_2,&value);
printf("value : %d",value);
输出将是

value : 0
为什么它不打印值456? 如果字符串是:123123,您好,1,2456,我将在变量值中得到456


当字符串在456之前有重复的逗号时,有没有简单的方法获得值-456的输出?我有一个很长的解决方案,但如果有更好的解决方案,我会很高兴。

使用
sscanf
是一个硬要求吗?否则为什么不使用,而且,
char arr[10]=“字符串长度超过九个字符”
也不起作用。当创建一个演示给我们看时,请确保它复制了您询问的问题,仅此而已。无关的错误和问题会分散你对实际问题的注意力。@Someprogrammerdude,我认为strtok可能会起作用,我在这方面没有太多经验,对于这些错误我很抱歉,我的意思是使用100个字符的数组。你能给我看一个简单的使用strok的例子吗?如果你需要保留字段的数量,那么
strep()
是必需的<代码> Stotok()/Case>将考虑分隔符字符序列作为单个分隔符。(您也可以使用一对指针,或者组合使用
strcspn()
strspn()
来处理字符串)
strsp()
示例,使用
'\t'
作为分隔符,您只需更改为
,'