- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在用 c 编写一个小程序,正在创建的文件直到最后 150 行左右才开始获取随机字符,有时是我的程序的文件路径或其中的一部分是正确的。
注意:我使用 Mac Retina 和 Xcode 来编写和测试。
编辑:除非您想查看整个函数,否则我已将给我带来麻烦的部分放在此代码下面
int vieditor()
{
FILE *readtext, *writetext,*testfile,*writeagain;
char mytest[1000][81],controller = '\0',worq;;
int x,charactersperline = 0,lines = 0,i,k;
/* this just creates a file with 1000 lines */
testfile = fopen("/Users/scottcarlson/Classes/CS_222/test.txt","w");
for (i = 0; i<1010; i = i+1)
{
fprintf(testfile,"this is line %d \n",i);
}
fclose(testfile);
/* end of file creation */
readtext = fopen("/Users/scottcarlson/Classes/CS_222/test.txt","r");
writetext = fopen("/Users/scottcarlson/Classes/CS_222/test1.txt","w");
if (!readtext)
{
printf ("test.txt does not exist");
}
else
{
while ( ( x = fgetc( readtext ) ) != EOF )
{
if (charactersperline < 80 && lines < 1000)
{
fprintf(writetext,"%c",x);
char ch = x;
mytest[lines][charactersperline] = ch;
if (lines < 20)
{
printf("%s",&mytest[lines][charactersperline]);
}
}
if (x != 10)
{
charactersperline += 1;
}
else
{
charactersperline = 0;
lines += 1;
}
}
fclose(readtext);
fclose(writetext);
}
do
{
fseek(stdin,0,SEEK_END);
system("stty raw -echo");
controller = getchar();
system("stty cooked echo");
}
while (controller != 58);
scanf("%s",&worq);
if (worq == 'w')
{
writeagain = fopen("/Users/scottcarlson/Classes/CS_222/test.txt","w");
for (k = 0; k<lines; k = k+1)
{
fprintf(writeagain,"%s",mytest[k]);
}
}
else if (strncmp(&worq,"q!",5))
{
return 0;
}
return 0;
}
这就是整个函数,但是除非你愿意,否则你不需要看它,给我带来麻烦的部分是这里的底部
do
{
fseek(stdin,0,SEEK_END);
system("stty raw -echo");
controller = getchar();
system("stty cooked echo");
}
while (controller != 58);
scanf("%s",&worq);
if (worq == 'w')
{
writeagain = fopen("/Users/scottcarlson/Classes/CS_222/test.txt","w");
for (k = 0; k<lines; k = k+1)
{
fprintf(writeagain,"%s",mytest[k]);
}
}
else if (strncmp(&worq,"q!",5))
{
return 0;
}
return 0
这应该打印(覆盖)文件 test.txt,它在大约第 840 行之前都表现得很好,据我所知,这根本没有任何意义。
如果有人可以提供帮助,我将不胜感激,因为我在其他地方找不到这方面的信息。
这是文件 test.txt 开始写入随机内容的部分。
this is line 838
this is line 839
∆ø_ˇthis is line 840
¿_ˇthis is line 841
this is line 842
ˇthis is line 843
this is line 844
this is line 845
this is line 846
this is line 847
’ø_ˇthis is line 848
–è7zthis is line 849
_ˇthis is line 850
ˇthis is line 851
this is line 852
this is line 853
this is line 854
Ä◊ø_ˇthis is line 855
◊ø_ˇthis is line 856
ïˇthis is line 857
_ˇthis is line 858
this is line 859
this is line 860
this is line 861
this is line 862
∞Ãø_ˇthis is line 863
Ãø_ˇthis is line 864
éìˇthis is line 865
this is line 866
ˇthis is line 867
/lithis is line 868
this is line 869
this is line 870
p¶√_ˇthis is line 871
de/DerivedData/Project_5.c-akilnssybkcyvuetuwkrqlyxxtie/Build/Pthis is line 872
ystem_pthread.dylibthis is line 872
ystem_pthread.dylibthis is line 873
this is line 874
ˇthis is line 875
this is line 876
this is line 877
this is line 878
this is line 879
.c-akilnssythis is line 880
this is line 881
_ˇthis is line 882
最佳答案
您在 mytest 中没有以空终止行。 fprintf 期望在使用 %s 打印时在字符串末尾看到 '\0'。
当您逐个字符复制到 mytest 中时,您需要输入代码以在每行末尾添加 '\0',或者您可以在开头将整个数组初始化为 '\0'。最简单(但不是最有效)的方法是在每次添加字符后添加“\0”。
mytest[lines][charactersperline] = ch;
mytest[lines][charactersperline+1] = '\0';
当您开始新行时,您还必须在行的开头添加一个零字节,因为您的循环可能不会继续将任何内容放入该行中。
请注意,如果您的文件中没有任何内容,或者您的文件不以“\n”结尾,那么您也会遇到问题,因为您不会增加行数行
还有
printf("%s",&mytest[lines][charactersperline]);
应该是 %c 而不是 %s,因为您正在打印单个字符。
关于c - 为什么写入我的文件的文本完全正常,直到最后几行,当它在 c 中循环时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22390494/
猫f1.txt阿曼维沙尔阿杰贾伊维杰拉胡尔曼尼什肖比特批评塔夫林现在输出应该符合上面给定的条件 最佳答案 您可以在文件读取循环中设置一个计数器并打印它, 计数=0 读取行时做 让我们数一数++ if
我正在尝试查找文件 1 和文件 2 中的共同行。如果公共(public)行存在,我想写入文件 2 中的行,否则打印文件 1 中的非公共(public)行。fin1 和 fin2 是这里的文件句柄。它读
我有这个 SQL 脚本: CREATE TABLE `table_1` ( `IDTable_1` int(11) NOT NULL, PRIMARY KEY (`IDTable_1`) );
我有 512 行要插入到数据库中。我想知道提交多个插入内容是否比提交一个大插入内容有任何优势。例如 1x 512 行插入 -- INSERT INTO mydb.mytable (id, phonen
如何从用户中选择user_id,SUB(row, row - 1),其中user_id=@userid我的表用户,id 为 1、3、4、10、11、23...(不是++) --id---------u
我曾尝试四处寻找解决此问题的最佳方法,但我找不到此类问题的任何先前示例。 我正在构建一个基于超本地化的互联网购物中心,该区域分为大约 3000 个区域。每个区域包含大约 300 个项目。它们是相似的项
preg_match('|phpVersion = (.*)\n|',$wampConfFileContents,$result); $phpVersion = str_replace('"','',
我正在尝试创建一个正则表达式,使用“搜索并替换全部”删除 200 个 txt 文件的第一行和最后 10 行 我尝试 (\s*^(\h*\S.*)){10} 删除包含的前 10 行空白,但效果不佳。 最
下面的代码从数据库中获取我需要的信息,但没有打印出所有信息。首先,我知道它从表中获取了所有正确的信息,因为我已经在 sql Developer 中尝试过查询。 public static void m
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我试图在两个表中插入记录,但出现异常。您能帮我解决这个问题吗? 首先我尝试了下面的代码。 await _testRepository.InsertAsync(test); await _xyzRepo
这个基本的 bootstrap CSS 显示 1 行 4 列: Text Text Text
如果我想从表中检索前 10 行,我将使用以下代码: SELECT * FROM Persons LIMIT 10 我想知道的是如何检索前 10 个结果之后的 10 个结果。 如果我在下面执行这段代码,
今天我开始使用 JexcelApi 并遇到了这个:当您尝试从特定位置获取元素时,不是像您通常期望的那样使用sheet.getCell(row,col),而是使用sheet.getCell(col,ro
我正在尝试在我的网站上开发一个用户个人资料系统,其中包含用户之前发布的 3 个帖子。我可以让它选择前 3 条记录,但它只会显示其中一条。我是不是因为凌晨 2 点就想编码而变得愚蠢? query($q)
我在互联网上寻找答案,但找不到任何答案。 (我可能问错了?)我有一个看起来像这样的表: 我一直在使用查询: SELECT title, date, SUM(money) FROM payments W
我有以下查询,我想从数据库中获取 100 个项目,但 host_id 多次出现在 urls 表中,我想每个 host_id 从该表中最多获取 10 个唯一行。 select * from urls j
我的数据库表中有超过 500 行具有特定日期。 查询特定日期的行。 select * from msgtable where cdate='18/07/2012' 这将返回 500 行。 如何逐行查询
我想使用 sed 从某一行开始打印 n 行、跳过 n 行、打印 n 行等,直到文本文件结束。例如在第 4 行声明,打印 5-9,跳过 10-14,打印 15-19 等 来自文件 1 2 3 4 5 6
我目前正在执行验证过程来检查用户的旧密码,但问题是我无法理解为什么我的查询返回零行,而预期它有 1 行。另一件事是,即使我不将密码文本转换为 md5,哈希密码仍然得到正确的答案,但我不知道为什么会发生
我是一名优秀的程序员,十分优秀!