如何在C中剪切一个字符串

时间:2015-08-30 19:23:11

标签: c

我有一份带有电话号码和电话号码的文件。 我现在尝试将数字复制到结构的一部分,将地址复制到另一部分。 目前我只能获取文档的数据,但我无法将其放入我的结构中请帮助我

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"

2 个答案:

答案 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