Arrays sscanf重复字符后的值
嗨,我正试图从可能有空数据的字符串中解析数据。字符串的分隔符是逗号(,) 例如:123123,你好,,,456是一个字符串。我必须使用sscanf将字符串的每个数据解析为一个单独的变量,然后根据我的代码,我将丢失字符串中的值456: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
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'
作为分隔符,您只需更改为,'