fprintf和字符串中的字符

时间:2016-01-11 02:55:12

标签: c function file printf

在尝试创建一个函数将一些结构字段写入名为"providers.txt"的文件时,我遇到了这个奇怪的问题,该结构有三个fields: char code[5], char name[50] and char phone[12]

另外,我必须遵循这种i / o格式:

input:
code: TEST
name: Jordan Maker
phone: 02418380828

output(in file):
TEST<tab>(0241) 838.08.28<tab>Jordan Maker

当我使用load(field filling)函数测试时,数据printProvider就可以了,所以不是导致问题的结构。

这是功能:

int saveProviderinFile(Provider p, FILE *out)
{
int i;
out = fopen("providers.txt", "w");

if(out == NULL) return 0;
else
{
    fprintf(out, "%s\t(", p.code);
    for(i=0; i<=3;i++)fprintf(out, "%c", p.phone[i]);
    fprintf(out, ") ");
    for(i=4; i<=6;i++)fprintf(out, "%c", p.phone[i]);
    fprintf(out, ".");
    for(i=7; i<=8;i++)fprintf(out, "%c", p.phone[i]);
    fprintf(out, ".");
    for(i=9; i<=10;i++)fprintf(out, "%c",p.phone[i]);
    fprintf(out, "\t%s\n", p.name);
    return 1;
    }

}

不介意返回值,只是为了验证文件打开是否成功。

providers.txt中的结果如下所示:

TEST()..约旦规则

正如您所看到的,它不会在文件中打印手机,但它会在控制台中打印,即使我说的是fprintf而不是printf

我是stackoverflow的新手,所以如果我在问题格式中犯了一些错误,请原谅。原谅我的坏英语。

提前致谢!

编辑:这是填充程序。

    void buildProvider(Provider *p, char code[], char name[], char phone[])
{
    strcpy(p->code, code);
    strcpy(p->name, name);
    strcpy(p->phone, phone);
}

这是打印程序,打印格式很好:

void printProvider(Provider p)
{
    int i;

    if(strcmp(p.code, "0000") != 0) 
    {
        printf("%s\t(", p.code);
        for(i=0; i<=3;i++)printf("%c", p.phone[i]);
        printf(") ");
        for(i=4; i<=6;i++)printf("%c", p.phone[i]);
        printf(".");
        for(i=7; i<=8;i++)printf("%c", p.phone[i]);
        printf(".");
        for(i=9; i<=10;i++)printf("%c", p.phone[i]);
        printf("\t%s\n", p.name);
    }
    else
    {
        printf("Provider not found\n");
    }
}

0 个答案:

没有答案