c - 在 C 中输出的开头打印一个额外的空行

标签 c printing line printf output

为什么在输出的开头打印一个空行?\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;
}

它上面没有任何打印品,不知道为什么会这样。

最佳答案

当您调用 fgets 时,您的 r 字符串末尾有一个换行符。因此,当您反转它时(通过调用 inv),字符串以换行符结尾。然后,当您打印它时,您会首先看到换行符。

r -> "hello\n"
invP = "\nolleh"

如果你想删除换行符,你可以使用类似的东西

char *pos;
if ((pos=strchr(r, '\n')) != NULL)
    *pos = '\0';

(取自here)

关于c - 在 C 中输出的开头打印一个额外的空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604287/

相关文章:

c - 将 double 值存储在 unsigned int 的位置

c++ - c中如何获取进程ID,getpid()没有实现

c - 调试断言失败,使用 C 的输入格式无效

line - 如何将文本粘贴到每行末尾? Sublime 2

objective-c - 从 Objective-C 调用 C

c - 为什么我的链表打印倒着?

php - 是否可以在 PHP 中使用 TCP/IP 套接字访问本地打印机?

jquery - 隐藏@media print 的表格行

javascript - CSS/JS : Animate a vertical line on scroll

ruby - 删除文本文件中的特定行?