循环时fgets问题

时间:2015-09-19 14:58:04

标签: c stdin fgets

目前我有这样的事情:

contentSlides = $('.article-wrapper');
slidesLeng = contentSlides.length - 1;
index = 0;   
for (i = 0; i <= slidesLeng; i++) {
    $(contentSlides[i]).addClass('slide-' + i);
}



$('.next').on('click', function () {
    if (index != slidesLeng) {
        $(contentSlides[index]).animate({'opacity':'0'},1000).removeClass('active');
        index = index + 1;
        $(contentSlides[index]).animate({ 'opacity': '1'},1000).addClass('active');

    }


});

$('.prev').on('click', function () {
    if (index != 0) {
        $(contentSlides[index]).animate({ 'opacity': '0'},1000).removeClass('active');
        index = index - 1;
        $(contentSlides[index]).animate({ 'opacity': '1'},1000).addClass('active');

    }


});

产生类似的东西:

while(fgets(i, sizeof(i), stdin)!=NULL) {
    printf("%s", i);
    printf("line%d - j", j);
    j++

我遇到的问题是我抓到的最后一行没有产生新行,第二个print语句继续在同一行上打印。

有人知道如何解决这个问题,以便产生:

line1
line1 - j
line2
line2 - j
line3line3 - j

1 个答案:

答案 0 :(得分:0)

通过添加检查字符串末尾是否有新行来修复:

if (strchr (line, '\n') != NULL) { 
    printf("%s", line); 
} 
else { 
    printf("%s\n", line);
}

还有Lister先生提出的更短的版本:

printf(strchr(line, '\n') ?"%s" :"%s\n", line);