アプリ版:「スタンプのみでお礼する」機能のリリースについて

例えば・・・
kanriya mada
と入力したら結果に
kanriya
mada

と表示したいのですがどうしたらよいか分かりません。

A 回答 (3件)

fgetsで読み込んだ場合は、1行全体を読み込めたか、途中でちょん切れたかを判定する必要があります。



BUFSIZマクロは、setbufの引数に渡す配列のサイズに使うためのもので、汎用的なバッファのサイズに使用すべきものではありません。

isspaceなどis~系の関数やputcharにchar型の値を直接渡すと、(char型が符号付きであれば)値が負の場合に動作が未定義になります。

どうせ1文字ずつ処理するのであれば、初めからgetcharで読み込んだ方が簡単な気がします。
    • good
    • 0
この回答へのお礼

getcharですか!確か使った事あります。ちょっとそれでやってみます!

お礼日時:2006/07/06 00:40

scanf()を使った入力はBuffer Overflowの危険性があります。


-- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< --
#include <stdio.h>
#include <ctype.h>

int
main(void)
{
char buf[BUFSIZ], *p;

fgets(buf, BUFSIZ, stdin);

p = buf;
while (*p != '\n' && *p != 0) {
if (isspace(*p)) {
while (isspace(*p)) {
++p;
}
putchar('\n');
}
else {
putchar(*p);
++p;
}
}
putchar('\n');
return 0;
}
    • good
    • 0
この回答へのお礼

難しそうですね。理解できるように頑張ります!

お礼日時:2006/07/05 12:24

#include <stdio.h>



void main(void){
char first_name[32],second_name[32];

printf("input first_name second_name>");
scanf("%s %s", first_name, second_name);

printf("%s\n%s\n", first_name, second_name);
}
    • good
    • 0
この回答へのお礼

有難うございます!助かりました!

お礼日時:2006/07/05 04:57

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