海外散修-厉飞雨 2017-09-23 07:13 采纳率: 0%
浏览 2257
已结题

c语言%s的问题 只打印字符数组的第一个字符 不是\0的问题

#include
#include

int getline(int s[], int lim)
{
int c, i, j;
j = 0;
for (i = 0; (c = getchar()) != EOF && c != '\n'; ++i)
if (i < lim - 2)
{
s[j] = c;
++j;
}
if ('\n' == c)
{
s[j] = c;
++i;
++j;
}
s[j] = '\0';
return i;
}
int remove(int s[])
{
int i;
i = 0;
while (s[i] != '\n')
{
++i;
}
--i;
while ((i >= 0) && (' ' == s[i]) || ('\t' == s[i]))
{
--i;
}
if (i >= 0)
{
++i;
s[i] = '\n';
++i;
s[i] = '\0';
}
return i;
}
int main()
{
int i;
int line[1000];
while (getline(line, 1000) > 0)
{
// if (remove(line) > 0)
printf("%s", line);

        //用这个可以打印全部。。。
    /*for ( i = 0; line[i] != '\0'; i++)
    {
        printf("%c", line[i]);
    }*/
    putchar('\n');
}
    system("pause");
    return 0;

}

  • 写回答

6条回答 默认 最新

  • OPMR 2017-09-23 10:46
    关注

    上面的新代码已经可以运行了,或者可以试试用C++的读入
    #include "iostream"
    //#include "cstring"
    using namespace std;
    int main(){
    string line;
    while (getline( cin,line))
    {
    cout<<line<<endl;
    cout<<endl;
    //putchar('\n');
    }
    // system("pause");
    return 0;
    }

    评论

报告相同问题?