为什么在输出的开头打印一个空行?\n仅在%s之后...帮帮忙,我太沮丧了。
if(argc > 1){
while(r!=NULL){
r = fgets(str, MAXL, stdin);
if(r==NULL){
return 0;
}
if (*argv[1] == 'i'){
char *invP = inv(r);
printf("%s\n", invP);
free(invP);
}
inv()为:
char* inv(char* C){
int length = 0;
int i;
for(i = 0; C[i]!='\0'; i++){
length++;
}
char *inverted;
inverted = malloc(length+1);
inverted[length] = '\0';
char* invP = inverted;
int j = 0;
for(i = length - 1; i >= 0; i--){
inverted[j] = C[i];
j++;
}
return invP;
}
上面没有任何指纹,不知道为什么会这样。
发布于 2013-03-25 05:39:20
当您调用fgets
时,r
字符串的末尾有一个换行符。因此,当您反转它(通过调用inv
)时,字符串将以换行符结尾。然后,当您打印它时,您首先会看到换行符。
r -> "hello\n"
invP = "\nolleh"
如果想要删除换行符,可以使用如下命令
char *pos;
if ((pos=strchr(r, '\n')) != NULL)
*pos = '\0';
(摘自here)
https://stackoverflow.com/questions/15604287
复制相似问题