我有一份带有电话号码和电话号码的文件。 我现在尝试将数字复制到结构的一部分,将地址复制到另一部分。 目前我只能获取文档的数据,但我无法将其放入我的结构中请帮助我
C代码
//function to get role for user - this returns the expected value
function getUserRole($username) {
include($_SERVER["DOCUMENT_ROOT"] . "/sharedinc/db.php");
try {
$sql = "SELECT role FROM users WHERE username = :username";
$s = $pdoUsers->prepare($sql);
$s->bindValue(":username", $username);
$s->execute();
} catch (PDOException $e) {
$error = "Error obtaining user role";
include($_SERVER["DOCUMENT_ROOT"] . "/sharedinc/dboutput.php");
exit();
}
$role = $s->fetch();
return $role[0];
}
//function to check page view for that role - this returns the column name
function getPageView($role, $page) {
include($_SERVER["DOCUMENT_ROOT"] . "/sharedinc/db.php");
try {
$sql = "SELECT :page FROM roles WHERE role = :role";
$s = $pdoUsers->prepare($sql);
$s->bindValue(":role", $role);
$s->bindValue(":page", $page);
$s->execute();
} catch (PDOException $e) {
$error = "Error obtaining pageview for role";
include($_SERVER["DOCUMENT_ROOT"] . "/sharedinc/dboutput.php");
exit();
}
$pageview = $s->fetch();
return $pageview[0];
}
//end-goal query needs to be able to store the values as session variables
$_SESSION["username"] = $_POST["username"];
$_SESSION["role"] = getUserRole($_SESSION["username"]);
$_SESSION["useradminview"] = getPageView($_SESSION["role"], "useradminview");
我的.txt文档中的数据示例
" Firma&#34 ;;"&#34 ;;" Auto GmbH&#34 ;;" gasse 3&#34 ;;" 5000&#34 ;; "星期一&#34 ;;"&#34 ;;" 0456&#34 ;;" 45652" "丰资本&#34 ;;"&#34 ;;" ADAC&#34 ;;"&#34 ;;" 50000&#34 ;;"星期一及#34 ;;"&#34 ;;" 2156&#34 ;;" 545218"
答案 0 :(得分:1)
您还需要使用strtok
。看这个例子。但请注意,此示例假设数据是以固定格式编写的(如果数据以其他格式显示,则无法使用 - 您可能需要根据需要对其进行修改,这只是说明):
假设每行的数据格式:
地址; telephoneNumber;
#include <string.h>
..
char * value;
while(fgets(buffer,256,fp) != 0)
{
value = strtok(buffer, ";"); // get address
strcpy(tel.adresse, value);
value = strtok(NULL, ";"); // get number
strcpy(tel.nummer, value);
}
还有:
while(buffer != 0)
你的代码中的没有意义。很难buffer
将为0.它是数组,buffer
的值将始终是该数组开始的内存地址。您无法分配到buffer
。
以下是关于使用strtok
的另一个post。
答案 1 :(得分:-2)
要使用您的数据:fscanf(fp, "%s %s %s %d", str1, str2, str3, &number);
或者您可以使用getc
来获取一个字符,但是您需要测试EOF