
環境はC言語です。
一行から不定数の文字列を入力したいと考えています。
fscanfは使わずに、fgetsとsscanfを使って実現させたいと考えています。
以下ではうまくいきませんでした。
--sorce--
char temp[1024], buf[1024];
while(fgets(stdin, 1024, buf) != NULL)){ //ファイルで標準入力でもどっちも可能
while(sscanf(buf, "%s",temp) != EOF){
printf("%s ", temp);
}
}
--input--
red blue black yellow white red
red red black yellow
white blue
red blue blue
--理想output--
red blue black yellow white red red red black yellow white blue red blue blue
よろしくおねがいします。
No.1ベストアンサー
- 回答日時:
#include <string.h>
#include <ctype.h>
#include <stdio.h>
char temp[1024], buf[1024];
void main(void)
{
char *p;
while(fgets(buf, 1024, stdin) != NULL){
p = buf;
while(sscanf(p, "%s",temp) != EOF){
printf("%s ", temp);
p += strlen(temp);
while ((*p) && (isspace(*p))) p++;
}
}
}
・fgetsの引数が間違っている(bufとstdinが逆) 40点減点
・括弧閉じが1つ多い 40点減点
・bufからsscanfしても常に同じ文字列しか読み込まないので自分でポインタを進めないといけないのをやってない 5点減点
100点満点で15点。
No.2
- 回答日時:
因みに、1行が1024バイト以上の場合1024バイト目と1025バイト目にまたがる文字列が2つに分離してしまうバグがあるが、対処してない。
fgetsで一定の文字列を読み込む場合は、本当であれば、読み込んだ行の末尾に'\n'があるかどうかで、1行の終わりまで読み込んだか、1行がバッファサイズよりも長くて読み込まれていない続きがあるか、判定して処理を変えるべき。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) VS CodeでTEXファイルにPDF形式の図を挿入する方法 2 2023/01/19 11:56
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- C言語・C++・C# C言語の質問です。バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、 3 2023/07/19 14:58
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- その他(プログラミング・Web制作) 物理の斜方投射で目盛りに数値を入れたい 2 2023/05/27 06:32
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- その他(プログラミング・Web制作) 物理の斜方投射の目盛り線とx軸、y軸の追加について 3 2023/05/26 21:11
- JavaScript jsで、配列内の文章を改行する際どのようにすればいいですか。 3 2022/07/05 20:40
- HTML・CSS 疑似要素で背景画像に指定したSVG画像の色変更 2 2023/01/30 22:45
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セグメントエラー
-
”123456”といった整数を文字列...
-
C言語について
-
プログラミング 文字入力のエラ...
-
C言語のステップ数をカウントす...
-
sscanfとscanfの違いがよくわか...
-
VBで全角文字の上位コードを...
-
C言語の初心者です。これを実行...
-
至急お願いします
-
cプログラミングについて
-
C言語 空白の行(改行のみ)が...
-
C言語 strlen 再入力を促す
-
文字列から数字への変換
-
Cプログラムでの標準入力から...
-
switchの使い方を教えてください。
-
文字列の問題
-
プログラムのことで
-
文字列を特定の全角文字で区切...
-
メニューバーでクリックした個...
-
C++でランレングス符号化のプロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CStringのFindで文字列検索を行...
-
fgetsで拾われる改行文字を削除...
-
sscanfとscanfの違いがよくわか...
-
反転した数値を表示させるやり方
-
charと%c , %s の関係について
-
fgets関数を使用したときの文字...
-
Cで「大文字、小文字の判定」は...
-
strstrを利用しない文字列検索...
-
文字列中に含まれる文字の個数...
-
C言語のステップ数をカウントす...
-
itoaわかりません
-
C++
-
C/C++言語で日本語処理
-
C言語 空白の行(改行のみ)が...
-
CStringについて
-
小文字のみを数える方法
-
教えていただけませんか?C言語...
-
ブランクのチェック
-
str[j++]の意味
-
初歩的なプログラムなんですが...
おすすめ情報