首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件操作问题

文件操作问题
EN

Stack Overflow用户
提问于 2014-07-03 11:15:01
回答 2查看 777关注 0票数 0

我正在写的一段代码遇到了很多问题。我也不是很确定出了什么问题。

下面是我正在尝试的代码:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char * argv[]) {

    char pass[10];
    FILE *fp;
    char username[10];

    system("clear");    
    printf("\nWelcome to Sign-Up Testing.");
    printf("\nWhat UserName would you like?");
    printf(" Max 10 characters.");
    printf("\n\n>>>");
    scanf("%s", &username);
    fp = fopen("%s.dgf", username,"r");
    if(fp != NULL) {
        printf("\n%s is already taken.\n");
        sleep(1);
        return 0;
    }
    else if(fp == NULL){
        fopen("%s.dgf", username,"w");
        printf("\nPassword:\n");
        scanf("%s", &pass);
        fprintf(fp,"%s", pass);
        printf("\nThank you for signing up!");
    }


    return 0;
}

这是Terminal告诉我的。

代码语言:javascript
复制
Sign-Up.c: In function ‘main’:
Sign-Up.c:15:2: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[10]’ [-Wformat]
Sign-Up.c:16:2: error: too many arguments to function ‘fopen’
/usr/include/stdio.h:273:14: note: declared here
Sign-Up.c:18:3: warning: format ‘%s’ expects a matching ‘char *’ argument [-Wformat]
Sign-Up.c:23:3: error: too many arguments to function ‘fopen’
/usr/include/stdio.h:273:14: note: declared here
Sign-Up.c:25:3: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[10]’ [-Wformat]
EN

回答 2

Stack Overflow用户

发布于 2014-07-03 11:28:19

代码语言:javascript
复制
fp = fopen("%s.dgf", username,"r");

fopen不是一个变量函数,它不支持像%s这样的格式说明符。使用sprintfstrcpy使文件名成为字符串,然后使用它调用fopen

另一个问题是scanf

代码语言:javascript
复制
scanf("%s", &username);

username是一个char数组,并被转换为指向char的指针,这里不需要&

代码语言:javascript
复制
scanf("%s", username);
票数 0
EN

Stack Overflow用户

发布于 2014-07-03 11:57:41

fopen函数是fopen ("file", "r");该函数有3个参数。您可以使用

代码语言:javascript
复制
fopen(strcat("%s.dgf",username),"r");

我更喜欢使用gets函数来获取字符串:

代码语言:javascript
复制
char username[100];
gets(username);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24544346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档