電子書籍の厳選無料作品が豊富!

C言語についての質問です。

char型のbuffにabc'1という文字数列が入っていて、
sscanf(budf,"%s'%d",a,&b):と、char型のaとint型のbにそれぞれabcと1を格納させようとさせたのですがaに全て入ってしまいました。

どのようにすれば%sを空白以外で区切れますか?
お願いいたしますm(_ _)m

A 回答 (1件)

これでどうですかね



#include <stdio.h>
int main(void)
{
char buff[] = "abc'1";
char a[4];
int b;
sscanf(buff, "%[^']'%d", a, &b);
printf("%s\n", a);
printf("%d\n", b);
return 0;
}

区切り文字が不特定多数の時はstrtokを使うと良いかも
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char buff[] = "abc'1";
char s[2][10], *p;
int b, i=0;
p = strtok(buff, "'");
while (p) {
strcpy(s[i], p);
p = strtok(NULL, "'");
i++;
}
for (i=0; i<2; i++) printf("%s\n", s[i]);
return 0;
}
    • good
    • 0
この回答へのお礼

お礼が遅くなりごめんなさい。
ありがとうございます!
試してみます!

お礼日時:2018/12/23 16:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!