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 に答える