Ⅰ 用記事本寫的C語言源代碼怎麼調試和編譯
turbo c 2.0 漢化版的有兩個編譯窗口,一個是類似於dos的窗口,一個是windows常規窗口,你可以選擇其一,你在記事本里編好了沒法運行啊,所以要在這個編程軟體中寫程序,再運行。
Ⅱ c語言的源代碼寫在哪 記事本上嗎
c ide里,比如visual c,turbo c, dev-cpp,wintc等等
Ⅲ 簡單電子記事本的實現C 源代碼
?
Ⅳ 用c語言寫一個記事本程序
可以寫,不過你0分,劃不來,
這寫起碼要三四個小時,調試也要幾個小時.
加分了叫我.不會讓你失望的
Ⅳ C語言Windows記事本的代碼
windows自帶的記事本只能做編輯源代碼使用,要編譯需要有編譯器才行,找些其他的集成化軟體,編輯編譯連接調試集成一體的,如vc6.0,wintc等
Ⅵ 把c語言源代碼打進記事本以後干什麼
把後輟改成cpp,下載一個編譯軟體打開它
Ⅶ C語言編寫的記事本源代碼
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#define NULL 0
#define MAX 100
typedef struct lnode{
char date[MAX]; //存放數據
struct lnode * prior ; //前驅
struct lnode * next ; //後繼
int number ; //記錄一個節點的字元數!如果是頭節點就記錄他的節點個數
int quese ; //記錄節點在鏈表中的位置
}lnodetype;
lnodetype * l ; //設置兩個全局變數,分別是頭節點指針和尾節點指針
lnodetype * end ;
//**********這個函數是用來初始化的**********//
int iniatelist (lnodetype ** l , lnodetype ** end)
{
(*l) = (lnodetype *)malloc (sizeof (lnodetype) ) ;
if ( (*l) == NULL )
{
printf ("沒有隻夠的內存空間!程序即將退出!");
return 0 ;
}
(*l)->prior =(*l)->next = NULL ; //這是雙鏈表
(*l)->number = (*l)->quese = 0;
(*end) = (*l) ;
printf ("程序初始化完畢!");
return 0;
}
//**********這個函數是用來建立節點,並且插入元素的**********//
int link(lnodetype ** l, lnodetype ** end)
{
lnodetype *s ;
s = (lnodetype *)malloc ( sizeof (lnodetype) ) ;
if ( s == NULL ){
printf ("內存空間不夠,程序即將退出!") ;
return 0 ;
}
(*end)->next = s ;
s->prior = (*end) ;
(*end) = (*end)->next ;
(*l)->number++ ; //增加一個節點,頭節點的number就加1
s->quese = (*l)->number ; //這個是記錄節點在鏈表中的位置
printf ("%d行", s->quese ) ; //這個是節點在整個鏈表中的位置
gets(s->date) ;
s -> number = strlen(s->date) ;
return 0 ;
}
//**********這個是列印鏈表的函數**********//
int prin (lnodetype ** l, lnodetype ** end)
{
lnodetype * p ;
int i ;
int j = 0;
int couter = (*l)->number ;
p = (*l)->next ;
for (i=0; i < couter; i++){
printf ( "%d行" , i+1 ) ;
j = 0;
while ( ( p->date[j]>='a' && p->date[j]<='z') ||
(p->date[j]>='A' && p->date[j]<='z') ||
p->date[j]>='0' && p->date[j]<='9')
{
printf ( "%c" , p->date[j] ) ;
j++ ;
}
printf ("n") ;
p = p->next ;
}
return 0 ;
}
//*********這個查找和編輯相應行的函數**********//
int search (lnodetype ** l, lnodetype ** end )
{
int number ;
scanf ("%d" , &number) ;
int i ;
lnodetype * p ;
p = (*l)->next ;
for ( i=0; i<number-1; i++ )
p = p->next ;
printf ("%d行" , number ) ;
gets (p->date) ;
return 0 ;
}
//**********這個是在文本文件里搜索字元串的函數**********//
int searchstr(lnodetype ** l , lnodetype ** end)
{
char ptr[100] ;
int arrycouter ;
int mystrcmp( char *, char * , int ) ;
printf ( "ok!現在輸入你查找的字元串!" ) ;
scanf ( "%s" , ptr ) ;
arrycouter = strlen (ptr) ;
lnodetype * s ;
s = (*l)->next ;
char * p ;
int i = 1 ;
int couter = 0 ;
int number = (*l)->number ;
p = (char *)s->date ;
while ( i && number ){
// i=1是,證明沒有找到,向第二個節點繼續尋找
while ( i && ( ( (*p >= 'a') && (*p <= 'z') ) || ( (*p >= 'A') && (*p <= 'Z') ) ) ){
i = mystrcmp ( p , ptr , arrycouter );
if ( i == 1 ){
printf ("字元串已經在第%d行,第%d個字元開始,",s->quese, couter+1 );
i = 0 ;
}
else
{
p++ ;
couter++;
i = 1 ;
}
}
s = s->next ;
p = (char *)s->date ;
number -- ;
}
if ( i == 1 )
printf ("字元串在本文檔中不存在!");
return 0 ;
}
//**********(1)這個函數是用來實現退出不保存功能的**********//
int exitunsave(lnodetype ** l, lnodetype ** end)
{
lnodetype * s ;
while( (*l) != (*end) ){ //如果不保存的話,最好是把節點的空間都釋放,節省空間
s = (*end) ;
(*end) = (*end)->prior ;
free( s ) ;
}
return 0 ;
}
//**********(2)這個函數是用來實現退出但保存功能的**********//
int quitandsave( lnodetype ** l , lnodetype ** end )
{
FILE * fp ;
char ch ;
char filename[20] ;
lnodetype * p;
int i ;
int j ;
int couter = (*l)->number ;
p = (*l)->next ;
printf ("請輸入文件名:") ;
scanf ("%s" , filename ) ;
if ( (fp = fopen( filename , "w" )) == NULL ){
printf ("文件不能打開!n");
return 0 ;
}
for ( i=0; i<couter; i++ ){ //有幾個節點就進行多少次的存貯
ch = p->date[0] ;
j = 1 ;
while (ch != '\0'){
fputc (ch , fp) ;
ch = p->date[j] ;
j++ ;
}
p = p->next ;
fputc ( '#' , fp ) ; //注意在每個節點的後面加上結束的符號
}
fputc ( '@' , fp ) ; //整個文件關閉的標志
fclose ( fp ) ; //注意關閉文件,
return 0 ;
}
//**********由於庫函數比較字元串提供的功能不滿足要求,故自己寫了一個**********/
int mystrcmp( char * p ,char * sour ,int number )
{
while ( number && (*p) == (*sour) &&
( ( (*p >= 'a') && (*p <= 'z') ) || ( (*p >= 'A') && (*p <= 'Z') ) )){
p++ ;
sour++ ;
number-- ;
}
if ( number == 0 )
return 1 ;
else
return 0 ;
}
//**********這個函數是用來實現統計字元串功能的**********//
int coutword(lnodetype ** l , lnodetype ** end)
{ //考慮到只統計一行的單詞沒有意義,故統計整個文本
int yes = 1 ; //這個是進入單詞的標志
int no = 0 ; //在單詞外面的時候的標志
int i , j ,inaword ,count = 0 ;
inaword = no ;
lnodetype * s = (*l)->next ;
for (j=0; j<(*l)->number; j++){
for ( i=0; (s->date[i]>='a' && s->date[i]<='z') ||
(s->date[i]>='A' && s->date[i]<='z') ||
(s->date[i]>='0' && s->date[i]<='9' ) ||
(s->date[i]==' '); i++ )
{
if ( s->date[i] == ' ' )
inaword = no ;
else
if ( inaword == no )
{
inaword = yes ;
count++ ; //計算單詞
}
}
s = s->next ;
inaword = 0 ; //注意這里,把標志置為0了!
}
printf ( "n文本一共有 %d 行" , (*l)->number ) ;
printf ("n此文本一共有 %d 個單詞!" , count ) ;
return count ;
}
//**********這個函數是用來實現計算文本行數功能的**********//
int linecouter(lnodetype ** l , lnodetype ** end )
{
int couter ;
couter = (*l)->number ;
return couter ;
}
//**********這個函數是整和一上所有功能的菜單函數**********//
int editmenu(lnodetype ** l , lnodetype ** end )
{
char choice ;
char * p = "cls" ;
int i = 1 ; //這兩個變數是用來控制循環的
int j= 1 ;
system (p) ;
prin (&(*l) , &(*end)) ;
while (j){
printf ("*********************************** e: 編輯相應行 *************************************n") ;
printf ("*********************************** s: 搜索字元串 *************************************n") ;
printf ("*********************************** t: 統計單詞個數 ***********************************n") ;
printf ("*********************************** q: 退出編輯 ***************************************n") ;
scanf("%c",&choice);
scanf("%c" , &choice) ; //????莫名其妙的問題,非要兩個請求輸入語句才肯停下來!
switch (choice)
{
case 'e' : {
i = 1 ;
while (i)
{
search( &(*l) , &(*end) );
system (p) ;
prin( &(*l) , &(*end) ) ;
printf ("n1 繼續編輯 0 結束編輯n") ;
scanf ("%d" , &i) ;
}
}
break;
case 's' : {
i = 1 ;
while (i)
{
searchstr( &(*l) , &(*end) );
getchar();
getchar();
system (p) ;
prin( &(*l) , &(*end) ) ;
printf ("n1 繼續搜索 0 結束搜索n") ;
scanf ("%d" , &i) ;
}
}
break;
case 't' : {
coutword ( &(*l) , &(*end) ) ;
getchar() ;
}break;
default : return 0 ;
}
system (p) ;
prin( &(*l) , &(*end) ) ;
printf ("n1 回到編輯菜單 0 結束編輯n") ;
scanf ("%d" , &j) ;
if (j == 1)
system (p) ;
else
return 0 ;
}
return 0 ;
}
//**********實現第一個模塊:新建空白文檔**********//
int newtext( lnodetype ** l ,lnodetype ** end )
{
printf ( "新文本文件:n" ) ;
int i = 1 ;
char judstr[MAX] ;
lnodetype * temp ;
char jud ;
char * p = "cls" ;
while ( 1 ){
link( &(*l) , &(*end) ) ;
jud = (*end)->date[0] ;
if ( jud == '5' ){ //輸入『5』結束一切
temp = (*end) ;
(*end) = (*end)->prior ;
free (temp) ;
while (1){
printf ( "******************************* out :退出不保存 ****************************n") ;
printf ( "******************************* edit :編輯信息 *****************************n") ;
printf ( "******************************* quit :退出而不存檔 **************************n") ;
printf ( "******************************* qas :退出且存檔 ****************************n") ;
printf ( "******************************* con :繼續輸入! *****************************n") ;
gets(judstr) ;
if ( !strcmp(judstr , "out") )
{
exitunsave( &(*l) , &(*end) ) ;
return 0 ;
}
else
if ( !strcmp(judstr , "qas") )
{
quitandsave( &(*l) , &(*end) ) ;
return 0 ;
}
else
if ( !strcmp(judstr , "edit") )
{
editmenu (l , end) ;
return 0;
}
system (p) ;
}
return 0 ;
}
}
return 0 ;
}
//**********這個是裝入文件的函數**********//
int loadtaxt( char * filename )
{
FILE * fp ;
lnodetype * l ;
char ch ;
int i = 0 ;
char * p = "cls" ;
char judstr[MAX] ;
lnodetype * head ;
lnodetype * end ;
iniatelist ( &head , &end) ;
l = end = head ;
if ( (fp = fopen( filename, "r+")) == NULL ){
printf ("文件不能打開!n") ;
return 0 ;
}
ch = fgetc ( fp ) ;
while ( ch != '@' ){
lnodetype *s ;
s = (lnodetype *)malloc ( sizeof (lnodetype) ) ;
if ( s == NULL ){
printf ("內存空間不夠,程序即將退出!") ;
return 0 ;
}
end->next = s ;
s->prior = end ;
end = end->next ;
l->number++ ;
s->quese = l->number ;
printf ("%d行", s->quese ) ;
while ( ch != '#'){
s->date[i] = ch ;
ch = fgetc (fp) ;
i++ ;
}
i = 0;
while ( (end->date[i]>='a' && end->date[i]<='z') ||
(end->date[i]>='A' && end->date[i]<='z') ||
(end->date[i]>='0' && end->date[i]<='9' ) ||
(end->date[i]==' ') )
{
printf ( "%c" , end->date[i] ) ;
i++ ;
}
end->date[i] = '\0' ; //注意在節點的最好加上這個,以讓退出保存功能函數知道此節點已結束
printf ( "n" ) ;
i = 0;
ch = fgetc ( fp ) ;
}
fclose (fp) ;
printf ("n文件成功裝入!n") ;
while (1){
printf ( "******************************* out :退出不保存 ****************************n") ;
printf ( "******************************* edit :編輯信息 *****************************n") ;
printf ( "******************************* qas :退出且存檔 ****************************n") ;
printf ( "******************************* con :繼續輸入! *****************************n") ;
scanf("%s",judstr);
if ( !strcmp(judstr , "out") )
{
exitunsave( &l , &end ) ;
return 0 ;
}
else
if ( !strcmp(judstr , "qas") )
{
quitandsave( &l , &end ) ;
return 0 ;
}
else
if ( !strcmp(judstr , "edit") )
{
editmenu (&l , &end) ;
return 0 ;
}
system (p) ;
}
return 0 ;
}
//**********主函數**********//
void main ( void )
{
//iniatelist (&l , &end) ;
//newtext(&l , &end) ;
char filename[MAX] ;
scanf ( "%s" , filename ) ;
loadtaxt( filename ) ;
}
很不容易做的程序!!!
通過編譯
Ⅷ C語言編寫記事本的代碼怎麼寫
給你貼出兩種代碼,自己喜歡哪個用哪個。涉及到哪些知識就自己在熟悉代碼的時候發覺了。 ---------------------------------------------------------------------
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#define NULL 0
#define MAX 100
typedef struct lnode{
char date[MAX]; //存放數據
struct lnode * prior ; //前驅
struct lnode * next ; //後繼
int number ; //記錄一個節點的字元數!如果是頭節點就記錄他的節點個數
int quese ; //記錄節點在鏈表中的位置
}lnodetype;
lnodetype * l ; //設置兩個全局變數,分別是頭節點指針和尾節點指針
lnodetype * end ;
//**********這個函數是用來初始化的**********//
int iniatelist (lnodetype ** l , lnodetype ** end)
{
(*l) = (lnodetype *)malloc (sizeof (lnodetype) ) ;
if ( (*l) == NULL )
{
printf ("沒有隻夠的內存空間!程序即將退出!");
return 0 ;
}
(*l)->prior =(*l)->next = NULL ; //這是雙鏈表
(*l)->number = (*l)->quese = 0;
(*end) = (*l) ;
printf ("程序初始化完畢!");
return 0;
}
//**********這個函數是用來建立節點,並且插入元素的**********//
int link(lnodetype ** l, lnodetype ** end)
{
lnodetype *s ;
s = (lnodetype *)malloc ( sizeof (lnodetype) ) ;
if ( s == NULL ){
printf ("內存空間不夠,程序即將退出!") ;
return 0 ;
}
(*end)->next = s ;
s->prior = (*end) ;
(*end) = (*end)->next ;
(*l)->number++ ; //增加一個節點,頭節點的number就加1
s->quese = (*l)->number ; //這個是記錄節點在鏈表中的位置
printf ("%d行", s->quese ) ; //這個是節點在整個鏈表中的位置
gets(s->date) ;
s -> number = strlen(s->date) ;
return 0 ;
}
//**********這個是列印鏈表的函數**********//
int prin (lnodetype ** l, lnodetype ** end)
{
lnodetype * p ;
int i ;
int j = 0;
int couter = (*l)->number ;
p = (*l)->next ;
for (i=0; i < couter; i++){
printf ( "%d行" , i+1 ) ;
j = 0;
while ( ( p->date[j]>='a' && p->date[j]<='z') ||
(p->date[j]>='A' && p->date[j]<='z') ||
p->date[j]>='0' && p->date[j]<='9')
{
printf ( "%c" , p->date[j] ) ;
j++ ;
}
printf ("n") ;
p = p->next ;
}
return 0 ;
}
//*********這個查找和編輯相應行的函數**********//
int search (lnodetype ** l, lnodetype ** end )
{
int number ;
scanf ("%d" , &number) ;
int i ;
lnodetype * p ;
p = (*l)->next ;
for ( i=0; i<number-1; i++ )
p = p->next ;
printf ("%d行" , number ) ;
gets (p->date) ;
return 0 ;
}
//**********這個是在文本文件里搜索字元串的函數**********//
int searchstr(lnodetype ** l , lnodetype ** end)
{
char ptr[100] ;
int arrycouter ;
int mystrcmp( char *, char * , int ) ;
printf ( "ok!現在輸入你查找的字元串!" ) ;
scanf ( "%s" , ptr ) ;
arrycouter = strlen (ptr) ;
lnodetype * s ;
s = (*l)->next ;
char * p ;
int i = 1 ;
int couter = 0 ;
int number = (*l)->number ;
p = (char *)s->date ;
while ( i && number ){
// i=1是,證明沒有找到,向第二個節點繼續尋找
while ( i && ( ( (*p >= 'a') && (*p <= 'z') ) || ( (*p >= 'A') && (*p <= 'Z') ) ) ){
i = mystrcmp ( p , ptr , arrycouter );
if ( i == 1 ){
printf ("字元串已經在第%d行,第%d個字元開始,",s->quese, couter+1 );
i = 0 ;
}
else
{
p++ ;
couter++;
i = 1 ;
}
}
s = s->next ;
p = (char *)s->date ;
number -- ;
}
if ( i == 1 )
printf ("字元串在本文檔中不存在!");
return 0 ;
}
//**********(1)這個函數是用來實現退出不保存功能的**********//
int exitunsave(lnodetype ** l, lnodetype ** end)
{
lnodetype * s ;
while( (*l) != (*end) ){ //如果不保存的話,最好是把節點的空間都釋放,節省空間
s = (*end) ;
(*end) = (*end)->prior ;
free( s ) ;
}
return 0 ;
}
//**********(2)這個函數是用來實現退出但保存功能的**********//
int quitandsave( lnodetype ** l , lnodetype ** end )
{
FILE * fp ;
char ch ;
char filename[20] ;
lnodetype * p;
int i ;
int j ;
int couter = (*l)->number ;
p = (*l)->next ;
printf ("請輸入文件名:") ;
scanf ("%s" , filename ) ;
if ( (fp = fopen( filename , "w" )) == NULL ){
printf ("文件不能打開!n");
return 0 ;
}
for ( i=0; i<couter; i++ ){ //有幾個節點就進行多少次的存貯
ch = p->date[0] ;
j = 1 ;
while (ch != '\0'){
fputc (ch , fp) ;
ch = p->date[j] ;
j++ ;
}
p = p->next ;
fputc ( '#' , fp ) ; //注意在每個節點的後面加上結束的符號
}
fputc ( '@' , fp ) ; //整個文件關閉的標志
fclose ( fp ) ; //注意關閉文件,
return 0 ;
}
Ⅸ 用記事本寫c語言
只要電腦上有編譯的軟體 用記事本是可以 編寫c語言的
Ⅹ C語言 記事本
C:\\Users\\swj\\Desktop\\作業\\C語言\\a.txt
路徑名是不是有問題呀?
正常應該是C:\Users
具體原因,可以在fopen調用失敗時候, 列印調用出錯原因的具體信息:
printf("ERROR:%s\n", strerror(errno));