1

我正在寻找 c 编程方面的专家。提前致谢。

例子:

#include <stdio.h>
#include<stdlib.h>
#include<ctype.h>

void main()
{
char name[100][52],selection[2]="Y";
int x,nname=1;
float sales;

do
{
    printf("Enter name: ");
    fflush(stdin);
    fgets(name[nname],51,stdin); // i need put a wrapper in here
    printf("Enter sales: ");
    scanf("%f",&sales);
    if (sales<1000)
        printf("%s\tgood\n",name[nname++]);
    else
        printf("%s\tvry good\n",name[nname++]);
    printf("Enter another name?(Y/N)");
    fflush(stdin);
    fgets(selection,2,stdin);
    *selection=toupper(*selection);
}while(nname<=100 && *selection=='Y');
for(x=1;x<nname;x++)
    printf("%s\n",name[x]); // want print the result without(newline) /n

printf("END\n");
system("pause");
}

如何打印名称而不用换行符分隔?

4

2 回答 2

2

我用 GCC 4.4.1 - MinGW 编译它,它工作正常。它只发出警告。这是结果:

 warning: return type of 'main' is not 'int'|
||=== Build finished: 0 errors, 1 warnings ===|

现在它可以按您的预期工作。

#include <stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include <string.h> // strlen()

void main() {
    char name[100][52],selection[2]="Y";
    int x,nname=1;
    float sales;

    do {
        printf("Enter name: ");
        fflush(stdin);
        fgets(name[nname],51,stdin); // i need put a wrapper in here
        for (x=0; x<strlen(name[nname]); x++){ // this will discarge the \n
        if (name[nname][x] == '\n')
            name[nname][x] = '\0';
        }
        printf("Enter sales: ");
        scanf("%f",&sales);
        if (sales<1000)
            printf("%s\tgood\n",name[nname++]);
        else
            printf("%s\tvry good\n",name[nname++]);
        printf("Enter another name?(Y/N)");
        fflush(stdin);
        fgets(selection,2,stdin);
        *selection=toupper(*selection);
    } while(nname<=100 && *selection=='Y');
    for(x=1; x<nname; x++)
        printf("%s ",name[x]); // want print the result without(newline) /n

    printf("\nEND\n"); // inserted \n before END
    system("pause");
}
于 2012-07-07T12:30:52.590 回答
1

只需使用

printf("%s ", name[x]);

代替

printf("%s\n", name[x]);

角色正在创建新的\n线条。

编辑

fgets显然将换行符读入缓冲区 - 您可以使用

name[nname][strlen(name[nname])-2] = '\0';
于 2012-07-07T12:00:55.927 回答