- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
编写一个 C 程序,打开一个名为 phoneList.txt 的文本文件并搜索联系人(名字、姓氏、电话号码),并更新现有联系人的电话号码。我的问题出在更新电话号码程序中。当我使用 fgets 查找匹配名称以更新联系人时,光标位于下一行的开头,也就是在与用户搜索匹配的联系人之后的联系人开头。这是我的代码:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void){
struct record{
char firstName[20];
char lastName[20];
char phoneNum[15];
};
struct record info;
FILE *fp;
char line[100];
char phoneInfo[100];
char fullName[100];
char *stream;
int n = atoi(getenv("CONTENT_LENGTH"));
fgets(stream, n+1, stdin); //put query string into stream from stdin
//SET HTML OUTPUT AND TITLE, TEST CONTENT OF STREAM
printf("%s%c%c\n", "Content-type:text/html;charset=iso-8859-1",13,10);
printf("<p>%s</p>", stream);
sscanf(stream, "firstName=%[^&]&lastName=%[^&]&phoneNum=%s", info.firstName, info.lastName, info.phoneNum);
strcpy(fullName, info.firstName);
strcat(fullName, " ");
strcat(fullName, info.lastName);
strcpy(phoneInfo, fullName);
strcat(phoneInfo, " ");
strcat(phoneInfo, info.phoneNum);
//strcat(phoneInfo, "\n");
printf("%s", phoneInfo);
printf("\n");
//TEST FORMATTING OF PHONE INFO VAR
fp = fopen("phoneList.txt", "r+");
if(fp == NULL){
printf("Error opening the file.\n");
return 1;
}
while(fgets(line, 99, fp)!=NULL){
if(strstr(line, fullName)!= NULL){
//fseek(fp, -(strlen(phoneInfo)+1), SEEK_CUR);
fputs(phoneInfo, fp);
printf("Success! Number updated. \n");
fclose(fp);
return;
}
}
if(feof(fp)){
//fputs(phoneInfo, fp);
printf("goes to here");
}
fclose(fp);
return 0;
}
我对 fseek 进行了评论,因为它的行为很奇怪,具体取决于正在搜索的联系人是否在列表末尾。我认为它与其中包含\n 字符的文本文件有关。想知道是否有更好的方法来简单地覆盖与用户搜索匹配的行,或者至少将光标重置到与搜索匹配的行的开头。我在这个网站上做了很多谷歌搜索和搜索,但我无法找到任何我理解如何实现的东西。非常感谢您的帮助!干杯
最佳答案
到
I have fseek commented as it behaves strangely depending on if the contact being searched is at the end of the list.
fseek(fp, -(strlen(phoneInfo)+1), SEEK_CUR);
在最后一行,你应该返回 strlen(phoneInfo),而不是 strlen(phoneInfo)+1。
因为在其他行中,有一个换行符。但在最后一行,可能没有。您可以按照效率较低的方式修改它:
if(line[strlen(line)-1]=="\n"){
fseek(fp, -(strlen(phoneInfo)+1), SEEK_CUR);
}
else{
fseek(fp, -strlen(phoneInfo), SEEK_CUR);
}
顺便说一下,只有当 phoneInfo 的长度与 txt 文件中的长度相同时,您的代码才能正常工作。
关于C电话本程序: Reposition cursor in text file to start of previous line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15725141/
我是 iPhone 开发新手,目前正在开发一个简单的 RSS 阅读器应用程序。我遇到的问题是我需要重新定位 UITableViewCells 内的 textLabel 。我尝试过 setFrame 或
我有代码可以让我在 UIImageView 上绘图 - 但我希望能够限制绘图区域。 我已经能够限制大小,但现在我无法定位它:如果我将 (0, 0) 更改为任何其他值,我的图像将完全消失并且绘图功能将停
我正在尝试建立一个网站。但出于某种原因,我无法重新定位我的下拉列表 (CSS)。需要一些帮助。我需要将该下拉列表移至中心。 HTML代码: MY CYCLE
我画了一个三向维恩图。我有三个似乎无法解决的问题。 移动圆标签(即“Set1”、“Set2”、“Set3”)的代码是什么,因为现在离圆太远了。 使圆圈大小相等/更改圆圈大小的代码是什么? 围绕绘图移动
我正在通过更改 OpenCart 2.0.2.0 的默认模板代码来设计自己的模板。重新定位“搜索”字段后,它不再起作用:按 Enter 键时不会提交,并且单击表单中的搜索按钮时不会在 URL 中提交搜
在此页面上 - http://binkley2.nowmgbeta.com/services - 我正在使用 id 标签,这样我就可以使用我的下拉菜单链接到那些部分。不过,我的 Sticky head
fiddle :https://jsfiddle.net/vpkarep8/ 我有三个饼图,在使用新数据更新时会显示动画,但我似乎无法正确更新标签。上面附有一把 fiddle 。 为了更改文本,我必须
我继承了一个显示时间轴事件的 D3 图表,事件显示为圆圈。要建立 x 轴,页面使用以下内容,其中 show_date 是 csv 文件中的一列。 x.domain(d3.extent(data, fu
我目前有一个 div,其中有许多大小相等的内联 block 对象。目前每行有四个。我想确保如果父 div 的对象太多,滚动条就会出现。为此,我使用了 overflow-y: auto。这工作正常。 问
编写一个 C 程序,打开一个名为 phoneList.txt 的文本文件并搜索联系人(名字、姓氏、电话号码),并更新现有联系人的电话号码。我的问题出在更新电话号码程序中。当我使用 fgets 查找匹配
在使用 ggplot 时,我在格式化的两个方面遇到了一些困难。 首先,我希望能够为每个条形添加水平线,以便条形看起来像这样: (来源:eurosurveillance.org) 第二,我想更改刻度标签
有没有办法将 chrome 扩展程序的 browser_action 的 popup.html 页面重新定位到 chrome 扩展程序图标区域(右上角)以外的某个地方?我希望能够在任何选项卡中使用我的
我有几个弹出窗口按钮,单击这些按钮即可动态获取弹出窗口信息。我能够获得其各自按钮的正确信息,但很难重新定位或调整弹出窗口的大小。 [这是链接] http://bootply.com/87953哪里可以
我想创建一个无限网格平面,并希望重新使用现有网格而不是创建一个非常大的网格。 我尝试过使用 camera.position.z 和 grid.position.z,但是当我四处移动相机时 grid.p
http://jsfiddle.net/cD4Gr/4/ 乐代码: $j(document).bind('click', function() { $j("#test").css({ bott
我想根据按钮的可见性属性重绘组合中的按钮。我根据其中的按钮进行合成以调整大小,并且我正在使用以下代码来刷新合成。问题:下面的代码工作正常,但按钮从未在复合中重新定位请帮忙。代码中是否缺少要重新定位的内
我是一名优秀的程序员,十分优秀!