ページ 11

課題を教えて下さい。

Posted: 2006年12月11日(月) 21:37
by ten
行継続の処理をするプログラムを作れ。一行を文字列として読み込み、その一行を画面に表示するプログラムを作る。ただし、改行の直前の文字が '\' であったときには、次の行も読み込んで先の一行に続けるようにすること。という課題をやっています。printfで\nの有無利用すれば上手くいくと思いました。でも上手くいきません。ループ抜ける条件も上手く作れません。ソースです。

#include <stdio.h>
#include <string.h>
#define MAX 51

void main ()
{
char x[MAX];
int n;

start:

gets(x);

n = strlen(x)-1;

if (x[n] = \){

printf("%s", x );

}else{

printf("%s\n", x );

}

goto start;


}

Re:課題を教えて下さい。

Posted: 2006年12月11日(月) 22:37
by フリオ(元通りすがり)
 
 これで、どうでしょう。
#include <stdio.h>
#include <string.h>

int main(void)
{
    FILE *fp;
    char data[51];
    int len;
    
    if((fp = fopen("test001.txt", "r")) == NULL){
        puts("File Open Error");
        return 1;
    }
    while(fgets(data, 51, fp) != NULL){
        len = strlen(data);
        if(data[len - 1] == '\n' && data[len - 2] == '\\'){
            data[len - 2] = '\0';
        }
        printf("%s", data);
    }
    return 0;
}