我一直试图让这段代码工作几个小时!我需要做的就是打开一个文件,看看它是否真实可读.我是C的新手,所以我确信我有一些愚蠢的东西.这是代码(简写,但复制):
#include <stdio.h>
main() {
char fpath[200];
char file = "/test/file.this";
sprintf(fpath,"~cs4352/projects/proj0%s",file);
FILE *fp = fopen(fpath,"r");
if(fp==NULL) {
printf("There is no file on the server");
exit(1);
}
fclose(fp);
//do more stuff
}
Run Code Online (Sandbox Code Playgroud)
我还验证了该路径正确指定了我已读取权限的实际文件.还有其他想法吗?
编辑1:我知道fpath最终为"~cs4352/projects/proj0/test/file.this"
编辑2:我也尝试过使用绝对文件路径.在这两种情况下,我都可以通过ls验证路径是否正确构建.
编辑3:有errno2 ...我正在尝试跟踪谷歌的含义.
编辑4: 好的,errno2是"没有这样的文件或目录".当fopen中的参考路径是"/home/courses1/cs4352/projects/proj0/index.html"时,我得到了这个,我验证了它确实存在并且我已经阅读了它的权利.至于下面列出的C代码,可能会有一些语义/新手错误,但是gcc没有给我任何编译时警告,代码完全按照它应该工作,除了它说它继续吐出errno2.换句话说,我知道所有的strings/char数组都正常工作,但唯一可能是问题的是fopen()调用.
解决方案: 好的,access()过程对我的帮助最大(我还在使用它,因为代码更少,更不用说更优雅的方式了).这个问题实际上来自于我没有向你解释的事情(因为直到我使用access()才看到它).为了驱逐文件,我使用strtok()拆分字符串,只是拆分"\n",但因为这是一个UNIX系统,我还需要添加"\ r".一旦我修复了它,一切都落到了位置,我确信fopen()函数也能正常工作,但我还没有测试过.
谢谢大家的有用建议,尤其是Paul Beckingham找到这个美妙的解决方案.
干杯!
今天,在使用sql server进行10年开发的第一次中,我在生产查询中使用了交叉连接.我需要将结果集填充到报表中,并发现具有creative where子句的两个表之间的交叉连接是一个很好的解决方案.我想知道在交叉连接的生产代码中有什么用处?
更新:托尼安德鲁斯发布的代码非常接近我使用交叉联接的代码.相信我,我理解使用交叉连接的含义,并不会轻易做到这一点.我很高兴最终使用它(我是一个书呆子) - 有点像我第一次使用完全外连接的时候.
感谢大家的答案!这是我使用交叉连接的方式:
SELECT CLASS, [Trans-Date] as Trans_Date,
SUM(CASE TRANS
WHEN 'SCR' THEN [Std-Labor-Value]
WHEN 'S+' THEN [Std-Labor-Value]
WHEN 'S-' THEN [Std-Labor-Value]
WHEN 'SAL' THEN [Std-Labor-Value]
WHEN 'OUT' THEN [Std-Labor-Value]
ELSE 0
END) AS [LABOR SCRAP],
SUM(CASE TRANS
WHEN 'SCR' THEN [Std-Material-Value]
WHEN 'S+' THEN [Std-Material-Value]
WHEN 'S-' THEN [Std-Material-Value]
WHEN 'SAL' THEN [Std-Material-Value]
ELSE 0
END) AS [MATERIAL SCRAP],
SUM(CASE TRANS WHEN 'RWK' THEN [Act-Labor-Value] ELSE 0 END) AS [LABOR REWORK],
SUM(CASE TRANS
WHEN 'PRD' …Run Code Online (Sandbox Code Playgroud) 给定一个对象列表,我需要将其转换为数据集,其中列表中的每个项目由一行表示,每个属性都是行中的一列.然后将此DataSet传递给Aspose.Cells函数,以便将Excel文档创建为报表.
说我有以下内容:
public class Record
{
public int ID { get; set; }
public bool Status { get; set; }
public string Message { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
给定List记录,如何将其转换为DataSet,如下所示:
ID Status Message
1 true "message"
2 false "message2"
3 true "message3"
...
Run Code Online (Sandbox Code Playgroud)
目前我能想到的唯一一件事如下:
DataSet ds = new DataSet
ds.Tables.Add();
ds.Tables[0].Add("ID", typeof(int));
ds.Tables[0].Add("Status", typeof(bool));
ds.Tables[0].Add("Message", typeof(string));
foreach(Record record in records)
{
ds.Tables[0].Rows.Add(record.ID, record.Status, record.Message);
}
Run Code Online (Sandbox Code Playgroud)
但这种方式让我觉得必须有一个更好的方法,因为至少如果将新属性添加到Record中,那么它们将不会显示在DataSet中......但同时它允许我控制每个属性被添加到行中.
有谁知道更好的方法吗?
这是其中之一,也许这么简单,我永远找不到它,因为其他人都已经知道了.
我有必须在我的视图中检查nil的对象所以我不会取消引用nil:
<%= if tax_payment.user; tax_payment.user.name; end %>
Run Code Online (Sandbox Code Playgroud)
或者我可以做这个变种:
<%= tax_payment.user ? tax_payment.user.name : '' %>
Run Code Online (Sandbox Code Playgroud)
所以这对大多数语言来说都没问题.但我觉得必须有一些闪亮的红宝石或铁杆我仍然缺少,如果这是我能做的最好的.
有关如何回显或输入txt文件的最后10行的任何想法?
我正在运行服务器更改日志脚本以提示管理员说明他们正在做什么,因此我们可以跟踪更改.我正在尝试让脚本显示最后10个条目,以便了解最近发生的事情.我找到了一个处理最后一行的脚本,如下所示,但无法弄清楚要在其中更改哪些内容以显示最后10行.脚本:
@echo off
setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%a in (c:\log09.txt) do (
set var=%%a
)
echo !var!
Run Code Online (Sandbox Code Playgroud)
日志文件示例:
06/02/2009, 12:22,Remote=Workstation-9,Local=,
mdb,bouncing box after updates,CAS-08754,
=================
07/02/2009, 2:38,Remote=,Local=SERVER1,
mdb,just finished ghosting c drive,CAS-08776,
=================
07/02/2009, 3:09,Remote=,Local=SERVER1,
mdb,audit of server,CAS-08776,
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?该脚本运行良好,只需要将更多行传输到屏幕即可.
有没有办法foreach在C#中对并行枚举进行样式迭代?对于标化的名单,我知道一个可以使用正for循环遍历指数范围内的int,但我真的很喜欢foreach到for了许多的原因.
如果它在C#2.0中有效,则可获得奖励积分
对于小型社区讨论,您使用的Visual Studio宏是什么?
我刚刚开始了解它们,并希望听到你们中的一些人不能没有.
这主要是由于SQL问题的答案.由于性能原因,故意省略UDF和子查询.我没有包含可靠性而不是它应该被视为理所当然,但代码必须工作.
性能总是先行?如此多的答案以性能为主要优先考虑.我的用户似乎更关心代码的修改速度.因此报告需要15秒而不是12秒才能运行.只要我不找不提供解决方案的借口,他们就可以忍受.
显然,如果15秒变为15分钟,则存在问题,但用户需要该功能.他们希望应用程序适应业务规则更改和增强请求.我希望能够在6个月后查看代码,并且能够在一个容易识别的位置进行更改,而不是追逐所有那些地方,因为他们认为调用另一个函数或子例程或Udf妨碍表现.
所有这一切,我会命令:可维护性(变化是生活中的事实.),性能(没有人喜欢盯着沙漏.),可重用性(很难确定应该再次使用哪些代码).
我需要自动将文本添加到用户发送的电子邮件中.文本不能作为Outlook中的签名添加,但必须在用户单击outlook中的"发送"后添加.我的公司使用Microsoft Exchange Server.
有任何想法吗?
谢谢!
c# ×2
batch-file ×1
c ×1
cmd ×1
code-reuse ×1
cross-join ×1
database ×1
dataset ×1
email ×1
file ×1
filesystems ×1
foreach ×1
iteration ×1
list ×1
loops ×1
maintenance ×1
performance ×1
ruby ×1
scripting ×1
solaris ×1
sql-server ×1
t-sql ×1
windows ×1