在C语言中,如何在用户输入的末尾连接.txt?

2024-05-19 13:07:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试检索用户输入,并找出他们是否在输入的末尾添加了“.txt”。如果他们有,什么也不做,如果没有-做点什么。你知道吗

以下是我迄今为止的一些代码:(argv[3]和[4]是用户的输入):

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

{

        if (strlen(argv[3]) > 4){
            usernames = strcpy(argv[2], ".txt");
        }
        if (strlen(argv[4]) > 4){
            passwords = strcpy(argv[3], ".txt");
        }
}

我已经在Python中掌握了它,我只是不能将它转换成C编程。下面是我的Python版本:

#Ask user for a file name
while True:
        inp = raw_input("Enter file name: ")
        if len(inp) > 0:
                break
        else:
                print "No file name givin, please try again"
#Check if file name has ".txt" on the end
if inp[-4:] != ".txt":
        inp = str(inp)+".txt"

Tags: 代码用户nametxtifmainfileint
2条回答

您可以使用:

#include <stdio.h>
#include <string.h>

int main(void) {
    int SIZE = 100;
    char string[SIZE];
    scanf("%s", string);
    if(!strcmp(&(string[strlen(string)-4]), ".txt"))
        //do something

return 0;

}

编辑:现在所有字符串都以“.txt”结尾

#include <stdio.h>
#include <string.h>

int main(void) {
    int SIZE = 100;
    char string[SIZE];
    scanf("%s", string);
    if(strcmp(&(string[strlen(string)-4]), ".txt"))
        strcat(string, ".txt");

    printf("%s\n", string); //all strings ends with ".txt" now
    return 0;
}

C和python是非常不同的语言—最大的区别之一是需要静态声明变量。在您的代码中,变量usernamespasswords必须声明为正确的类型才能允许赋值。下面是一些代码,根据代码中的条件将“.txt”添加到用户名或密码中。你知道吗

#include "stdio.h"   /* Allows us to call printf */
#include "string.h"  /* Allows us to use string functions (strlen, strcmp, ctrcpy) */

int main(int argc, char *argv[]) 
{
  size_t SIZE = 100;
  char usernames[SIZE], passwords[SIZE]; /* Create char arrays to store our inputs */

  printf("O usernames: %s, O passwords %s\n", argv[2], argv[3]); /* Print input */

  if (strlen(argv[3]) > 4) {
    strcpy(usernames, argv[2]); /* Copy argv[2] to usernames */
    if (strcmp(usernames + strlen(usernames) - 4, ".txt") )
      strcat(usernames, ".txt");
  }

  if (strlen(argv[4]) > 4) {
    strcpy(passwords, argv[3]); /* Copy argv[3] to passwords */
    if (strcmp(passwords + strlen(passwords) - 4, ".txt") )
      strcat(passwords, ".txt");
  }

  printf("U usernames: %s, U passwords %s\n", usernames, passwords); /* Print output */
  return 0;
}

我们使用strcpy将char数组从argv复制到usernames。我们还使用strcmp检查最后4个字符是否是.txtstrcmp在我的代码中使用一些指针数学来确保检查最后4个字符。我们也对passwords进行同样的检查。你知道吗

样本输入:

./a.out 1 uname upass foobar

样本输出:

O usernames: uname, O passwords upass.txt
U usernames: uname.txt, U passwords upass.txt

相关问题 更多 >