gpt4 book ai didi

python - 从Python到C

转载 作者:行者123 更新时间:2023-11-30 18:59:07 27 4
gpt4 key购买 nike

我正在尝试用 C 语言做到这一点,我有一些 Python 代码,但我不知道如何让它在 C 语言中工作,我已经习惯了高级语言,而 C 对我来说真的很新,也许你可以帮我翻译一下,我什么都没有,我不知道从哪里开始......

Python 代码:

archivo = open('passwd.txt')
for linea in archivo:
campos = linea.strip().split(':')
print 'User',campos[0],'has shell',campos[6]
archivo.close()

passwd.txt 如下:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh

输出应该是:

User root has shell /bin/bash
User daemon has shell /bin/sh
User bin has shell /bin/sh

有人可以帮助我吗?

最佳答案

它要复杂一些,但基本上有两个关键的事情你需要知道。我不会告诉您如何使用它们来做您想做的事情,而只是展示如何使用它们。

首先是逐行读取文件。这可以按如下方式完成:( Source )

FILE *file = fopen ( filename, "r" );
char line [ 128 ]; /* or other suitable maximum line size */
while ( fgets ( line, sizeof line, file ) != NULL ) /* read a line */
{
fputs ( line, stdout ); /* write the line */
}
fclose ( file );

第二个是解析该行。这里最好的工具是strtok。 (Source of example)

 const char string[] = "words separated by spaces -- and, punctuation!";
const char delimiters[] = " .,;:!-";
char *token, *cp;

...

cp = strdupa (string); /* Make writable copy. */
token = strtok (cp, delimiters); /* token => "words" */
token = strtok (NULL, delimiters); /* token => "separated" */
token = strtok (NULL, delimiters); /* token => "by" */
token = strtok (NULL, delimiters); /* token => "spaces" */
token = strtok (NULL, delimiters); /* token => "and" */
token = strtok (NULL, delimiters); /* token => "punctuation" */
token = strtok (NULL, delimiters); /* token => NULL */

将两者放在一起,找出如何获得正确的节点,然后就完成了。祝你好运!

关于python - 从Python到C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13755735/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com