如题,没有弄懂
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
int main()
{
int number;
int i,j,k;
string str1("");
while(~scanf("%d",&number))
{
int multiple1,remainder1;
for(i=0;i<number;i++)
{
scanf("%s",&str1);
multiple1=str1.size()/8;
remainder1=str1.size()%8;
if(multiple1>0)
{
for(j=0;j<multiple1;j++)
for(k=0;k<8;k++)
{
printf("%c",str1[k*(j+1)]);
}
if(remainder1>0)
{
for(j=0;j<remainder1;j++)
{
printf("%c",str1[multiple1*8+j]);
}
for(j=0;j<8-remainder1;j++)
{
printf("0");
}
}
}
for(j=0;j<remainder1;j++)
{
printf("%c",str1[j]);
}
for(j=0;j<8-remainder1;j++)
{
printf("0");
}
}
}
return 0;
}
已经明白了
因为字符串前面会有一个整型来存储位置信息,所以会吞掉四个字符
正确的用法是
scanf("%s",str1.data());